Tuesday, July 21, 2009

Refactoring in ColdFusion Builder

First Let’s just discuss what is Refactoring the source code in general.

What is Refactoring ?

Refactoring code in a programs means, one cleans up the code to improve the understandability, maintainability of the source code by changing source code’s internal structure or design, but keeps the overall result of the program same.

So next question one would is “How do I Refactor my program’s source code ?

First thing, it must not be done manually by one, as it’s more prone to human errors. Refactoring has to be an automated process and it’s a feature of and provided by the most of the IDE.

ColdFusion Builder is the new IDE provided by Adobe for Rapid development of ColdFusion applications. ColdFusion builder allows user to Refactor their application source code.

So one may argue…What’s the big deal with ColdFusion Bulider? most of the IDEs provide refactoring…

The big deal here is that it’s very challenging task for a non-typed language to provide Refactoring feature. ColdFusion being a loosely typed language, it’s not that straight forward to implement Refactoring for ColdFusion Builder, but still an attempt has been made to provide this feature in ColdFusion Builder to make life easier for CF developers.

What should I refactor to improve the understandability or maintainability of my source code?

During the application development cycle, one may hurry to complete the application due to various reasons and hence may end up using the variable names, function names, filenames and many other source code constructs such that it becomes difficult to understand for other developer, making maintainability and understandability of the application difficult. In order to avoid such situation, developer should take corrective actions to Refactor the above mentioned code constructs for making it easier to comprehend for other developers.

What sub-features does ColdFusion Builder offer for Refactoring?

ColdFusion Builder provides the following sub-features in Refactoring.

CFC UDF Refactor

In the following component, let’s say…one want to rename test() function to test123(), so it means that all the valid instances of the test() function through out the application should get refactored, including the references in the same component but other functions referring it.

<cfcomponent namespace="Refactor.abc" extends="def.b" >
<cffunction name="test" access="remote">
<cfreturn 1>
<!---Test 2 Method --->
<cffunction name="test2" access="remote">
<cfreturn test()>
<!----Test Method 3 from def\b.cfc---->
<cffunction name="test3" access="remote">
<cfreturn foo1()>

So what should one do to achieve it? Just left click on the function name, and then Right click to open the Menu, as shown in the following screenshot.

Click on the Refactor->Rename menu item and it will open up a Input dialog as following,

Now, provide the “New Name” for the test method and once you do that Disabled Preview button is enabled. Notice that we are enforcing user to preview the changes being done by ColdFusion Builder. Reason being at certain places, CF can not determine if the instance has to be considered for refactoring or not and so in such cases, it’s upto user to decide if the unsure instances (unchecked) shown in the preview, has to be considered or not. If required user should check it before preceding by pressing “OK” button.

Notice that even the URLs in / tags, which are referring to this test() method are being considered for refactoring. Such URL references are possible to consider for refactoring only when the Server is registered with ColdFusion Builder and the URLs are very much valid and accessible, which otherwise is not possible.

Note: User can Undo the Refactored changes by pressing Cntrl+Z from keyboard.

So we have seen how to refactor an UDF in CFC. Similar way, we can also perform the following operations.

  • Refactor CFM UDF
  • Refactor CFC UDF
  • Refactor Funcion Local scope variables
  • Refactor Function Argument Names
  • Refactor the CFC Name
  • Refactor CFM Name
  • Refactor Custom Tags
  • Refactor CFQuery Names
  • Refactor Scoped Varaible names like This/Application/session etc.. variables.
  • Refactor UnScoped Global variables in a CFM/CFC.
  • Refactor Variables in Included and Includee file.
  • Refactor ORM CFC which should also get reflected in ORM Entity Methods.
  • Method Refactoring through – “Application Varaible Mappings” in CF Builder

Note: To refactor the CFM/CFC/CustomTags, Explore the Template thorough Project Navigator, Right Click on the Template and select Refactor->Rename menuitem, as shown in the following screenshot.

Note: File/Template Refactoring is allowed only for, CFM/CFC files. TXT files or any other types of files can not be refactored.

Method Refactoring using "Application Variable Mappings"

Assume a scenario where an Application variable is defined for a CFC Object as following.

<cfset Application.appVar = createObject("component","abc.AppCFM.a")>

And now, the CFC function called Method() is invoked as following in some other template
<cfset Application.appVar.Method()>

In such a case, While Refactoring the Method() function, If a Varaible mapping is created for the application variable, then the above invokation usage will be considered for Refactoring, otherwise it will be ignored.

To Create Application Variable mappings.... Right Click on the Project >Properties window>ColdFusion Variables Mappings>Click on New button>enter Variable name as "Application.appVar" and Mapped To as "abc.AppCFM.a", Click OK button.

References Search

Not that always one needs to refactor the Code, But there are times, when one only wants to see/find the references of the Methods/Varaibels/CF templates etc…

In such a case, one can use the References option in the Right Click Menu, as shown in the following screenshot.

Similar option is also available for Template search from Project navigator view.
Reference search results will be shown in the Search panel as shown below.


Govind said...

Look like Coldfusion Builder is interpreting CFC name relative from the Project's root folder.

But in productive sites CFCs spreads across multiple folders like:


These CFCs will be consumed in some other CFM/CFC with relative name like:


And ColdFusion server understands CFC's full name from the paths provide under 'Custom Tag Paths' section of CF Admin.

How Coldfusion Builder helps in these scenario either during Refactoring or Referencing or Code Assit?

Is there any option to let Coldfusion Builder know the list of 'Custom Tag Paths'?


Jayesh Viradiya said...

CFC path resolution mechanisim is in place in ColdFusion Builder for the scenarios mentioned by you. In CF Builder a project is associated with CF Server, and hence it's easy to find out custom tags, CF mappings and also resolve CFC paths from webroot or relative to Project folder which is also under the workspace created under wwwroot. So Content Assist or Refactoring will know how to resolve the CFC references.

Anonymous said...

Given that CF is a such a loosely typed language what is your general strategy on tackling refactoring?

I can easily come up with a number of scenarios for which it's not possible to know the refactoring using static analysis!

How about this simple example:

Suppose I have component A and component B both with UDFs m. How would I be able to refactor the method m for component A? What does the editor do to help you out in this situation where it is ambiguous?

[cfset x = createObject("component", "A") /]
[cfif expressionNotKnowUsingStaticAnalysis]
[cfset x = createObject("component", "B") /]

And since this scenario can play out in so many ways, how effective do you expect refactoring to be on real codebases?

Jayesh Viradiya said...

Hi Bob,

Regarding 'Number of Scenarios', while developing this feature, even we had this thing in mind and have tried to cover most scenarios.

Regarding your UDF ambiguity example, this is very much a possibility, as there will be times when certain thigns will be clear only on Runtime and not compile time. We display such ambiguous cases in the preview screen but those cases will be UNCHECKED, leaving upto user to decide if to refactor or not. And also, as I have explained in my post, we force preview on user to review, before pressing the OK button. So moral of the story is, we leave upto user to decide on such runtime ambiguous cases.

Raghuram Reddy said...

in what way it is different from Dreamwever find/replace in the specified folder/file/opened files?

Jayesh Viradiya said...

Find/replace is just the content based dumb keyword matching searching on files/folders...here user has to be on his toes while performing this operation as otherwise it will replace unnecessary instances of the matching keywords also, resulting in broken source code. Refactoring is an intelligent technique in IDE to find/replace the right insntaces/references and it just doesnt go by the matching names.

Anonymous said...

hi! i like your blog.. thanks for the sharing.. easy to download

michaelvk said...
This comment has been removed by the author.
Troy said...


I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading.

Nice blog. I will keep visiting this blog very often.

Delphi development

Bob said...

I really appreciate the information you have provided in this blog especially about coldfusion. Thanks a lot! Very nice! health insurance california

Admin said...

This blog is awesome full of useful information that i was in dire need of.

Affiliate Management Solutions

Admin said...

This is really good advice. i also like this! thanks so much for this post!

Buy A Ready-Made Logo

golf stayz said...

Your article is extremely impressive. I never considered that it was feasible to
accomplish something like that until after I looked over your post .

Gold Coast golf
Gold Coast golf holidays
Sunshine Coast golf
Sunshine Coast golf holidays
Group golf holidays
Australian golfing holidays
Discount golf
Golf trips

Craig Chilvers said...

I just wanted to leave a comment to say that I enjoy your blog. Looking at the number of comments, I see others feel the same way! Congratulations on a very popular blog.

Boat Finance

Admin said...

This is definitely an amazing website for a beginner to get started. Timeline Facebook

Admin said...

Nice post having excellent contents.This is exactly what I’ve been looking for.Thank you very good. Applications for BlackBerry

Susan Gray said...
This comment has been removed by the author.
Susan Gray said...

ColdFusion is still in market I don't think so? How many companies are using ColdFusion as a software platform? Now, Developers are using PHP or JavaScript for programming and very of them know ColdFusion.

Susan Gray
Social Media App

asif ifteakhar said...

Thank you for the great article I did enjoyed reading it, I will be sure to
bookmark your blog and definitely will come back from again.
I want to encourage that you continue your great job, have a good day

north london business oppotunities
london business group

premiumflag banners said...

Nice article you got here. It would be great to read more about this theme. The only thing it would also be great to see on this blog is some pictures of any gizmos.

feather flag
flag banner
custom flag banners

asif ifteakhar said...

Thank you for the great article I did enjoyed reading it, I will be sure to
bookmark your blog and definitely will come back from again.
I want to encourage that you continue your great job, have a good day

north london business oppotunities
london business group
london nwtworking groups
london business networking

DexSmart Matt said...
This comment has been removed by the author.
joana lui said...

It is great to observe somebody put enough craze towards a matter. I'm thankful that I stumbled upon this process. I am lucky I used the time to read on past the 1st paragraph. You have got a whole lot to say, very much to offer. I really hope guys understand this and look into your page.

safety deposit box
bank safety deposit boxes
mailbox post
residential mailboxes
gold bar for sale

Boris kreiman said...

I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading what you all have to say

real estate law
how to buy a house
first time home buyer programs

golf stayz said...

Your article is extremely impressive. I never considered that it was feasible to
accomplish something like that until after I looked over your post .

فروشگاه کتاب
فروش کتاب
خرید کتاب
خرید اینترنتی کتاب
فروش اینترنتی کتاب
خرید کتاب اینترنتی
فروشگاه اینترنتی کتاب
فروش کتاب اینترنتی

golf stayz said...

Your article is extremely impressive. I never considered that it was feasible to
accomplish something like that until after I looked over your post .

فروشگاه کتاب
فروش کتاب
خرید کتاب
خرید اینترنتی کتاب
فروش اینترنتی کتاب
خرید کتاب اینترنتی
فروشگاه اینترنتی کتاب
فروش کتاب اینترنتی

DexSmart Matt said...

Nice post. It would be great to read more about this theme .

safe investment
forex investment
managed accounts
forex managed account
managed account
forex managed
pamm account

Felix Smith said...

It is in reality a nice and helpful piece of information. Local Advertising

Syed Faizan said...

This is very interesting. thanks for that. we need more sites like this. Lux Style Awards

joana lui said...

I just wanted to leave a comment to say that I enjoy your blog. Looking at the number of comments, I see others feel the same way! Congratulations on a very popular blog.

Metropolitan Safe Deposit Boxes Limited or Bank Safe Deposit Boxes limited (‘Metropolitan’) was originally formed in 1983 to construct and operate the Belgravia safety deposit box , Metropolitan’s safety deposit box facilities are strategically placed in the inner central area of Metropolitan London. The Company is the largest independent provider of Safe Deposit Boxes
Bank Safe Deposit Boxes Safe Deposit UK Bank Safe Custody Safety Deposit Boxes
Safe Deposit Facilities Safe Heaven this service in the United Kingdom. The two vaults provide thousands of boxes in 16 different sizes ranging from one-foot square and two-inch high boxes up to walk-in secure storage areas. The locations of the vaults are in Knightsbridge and St John’s Wood.

Felix Smith said...

I am really grateful to you for providing me with such useful information. Thanks a lot. Keep blogging. Hajj Packages
Economy Hajj Packages
Express Hajj Packages
Silver Hajj Packages
Executive Hajj Packages
Super Fast Hajj Packages
Hajj From INDIA Packages
Hajj e Badal Packages

Felix Smith said...

Nice post. Thank you for taking the time to publish this information very useful! I'm still waiting for some interesting thoughts from your side in your next post thanks! Wholesale Towels
Wholesale Cleaning Towels
Wholesale Hand Towels
Wholesale Microfiber Towels
Wholesale Salon Towels
Wholesale Shop Towels
Wholesale Vending Towels

Felix Smith said...

Your posting will accelerate our knowledge as well as our mobile globalization. It is very useful too. Hajj Packages

Felix Smith said...
This comment has been removed by the author.
Felix Smith said...

Thanks for sharing your website.This blogs are very informative. I really say thanks to you. Used Police Cars

Mia Smith said...

It is so lucky to read your blog,it is full of useful message.I wish we both can do better in the future.It great honor if you can visit our website,and give us some suggestion. Dawn Travels
Hajj Packages
Umrah Packages

Tina brian said...

Awesome post thanx for sharing this one realy helped me :)
Labaik Tours
Umrah Packages
Hajj Packages

Worldlatest carbd said...

Charge card help considerably boost additional improvements is normally mostly high-priced, though while even though this specific, any individual check-up charges associated with low-cost charges mutually and also great home home finance loan obligations, it could maybe fully reported indoor a lot more cost-effective with regards to the help considerably boost additional improvements considerably boost. It is best to fully need to obtain complicated that you can devote $793 in hardly ever aspect mutually and also charges that features real estate personalized cash loan indoor normal normal classic normal classic traditional bank.check cashing costa mesa

Anonymous said...

Your usually regular installments is sometimes found distinctive with eight throughout this technique on twelve bi-week by week parts, or even still, at intervals the event that your equity credit line depends on your individual Sociable Stability acquire, thus we have got a slant to appear at out for have associate title loan inclination to might began your installments to urge got from 3 to four customary month to month prices. Dependably centered on parts manual for prove a reduced check whole that's the larger match your funds.

Anonymous said...

The Office of Reasonable Trading spent a year looking at the market and found widespread evidence of irresponsible loaning and breaches of the law. It said borrowers were suffering "misery and hardship" as a result of fundamental problems with the way lenders auto title loans chicago operated, putting speed ahead of everything else.

Anonymous said...

“For those who struggle with their repayments, we are ensuring that someone credit ranking £100 will never repay more than £200 in any circumstance."“There have been many strong and aggressive views to take into consideration, but I am confident we payday loans have found the right balance."

marko said...

In realtà, sfide fisiche sono il secondo motivo più comune che gli anziani smettere di fare sesso. Le malattie cardiache, diabete e cancro può influenzare la capacità di una persona di funzionare sessualmente. erezioni solide a 60 anni

marko said...

La tua pagina web deve aspetto professionale ed essere chiari su ciò che si sta cercando di raggiungere. Se possibile lasciare la bozza finale per un giorno o due, poi ri-leggere. E 'sorprendente come spesso si noterà errori madornali, o vedere un modo molto migliore di dire qualcosa. come fare il cv in inglese gratuito

Justin said...

Va da sé, che si dovrebbe avere una buona padronanza delle lingue nella tua combinazione linguistica, è inoltre necessario avere familiarità con la cultura e costumi del paese. L'unico modo per farlo è circondandosi con la lingua, i.e: da soggiorno / studio nel paese in cui si parla la lingua. scrivere un curriculum vitae inglese per il canada

Justin said...

Ho chiesto perché, e lei ha detto guardando i 2005 e 2006 scansioni, 2008 scansione era migliorata, non riusciva a crederci, e ha detto di solito quando ci si trova nella gamma osteoporosi, non vieni fuori "(10). Quel medico era in realtà dicendo che sapeva che il trattamento accettato di supplementazione di calcio alto non funziona, ma usano comunque. difficolta di erezione a 60 anni

Hiba Farooqi said...

Very helpful article thanks for sharing!!!

economy umrah package

Oracle Fusion said...

That is a good tip especially to those new to the blogs here but very accurate information. Very nice blog post!! Thanks for the posting that is a really neatly written blog.
Oracle Fusion EBS Training

Neil Jakson said...

Your article has provoked a ton of positive hobby. I can see why since you have made such a decent showing of making it intriguing
Coursework writing service

Neil Jakson said...

very Informative Post, would love to read more, keep writing. I would like share some links, useful to students
Coursework writing services

Thu Lê said...

I was very impressed by this post, this site has always been pleasant news. Thank you very much for such an interesting post. Keep working, great job! In my free time, I like play game: douchebagworkout2.org. What about you?

Hà Nguyễn said...

This is a great article. It gave me a lot of useful information. thank you very much.


Megan Ryan said...

Refactoring code is something new for me and I'm not sure that I can use it in the future. But I'm sure that job search tips will be useful for everyone at least once.

Kristen Stewart said...

HP Printer Support Number
Canon Printer Phone Number
Brother Printer Support Phone Number

Neha sharma said...

Rice Bags Manufacturers
Pouch Manufacturers

Neha sharma said...

we have provide the best ppc service.
ppc services in gurgaon
website designing company in Gurgaon
PPC company in Noida

Neha sharma said...

we have provide the best fridge repair service.
fridge repair in faridabad
Bosch Fridge Repair in Faridabad
Godrej Fridge Repair in Faridabad
Samsung Fridge Repair in Faridabad
Videocon Fridge Repair in Faridabad
Whirlpool Fridge Repair in Faridabad
Panasonic Fridge Repair in Faridabad
LG Refrigerator Repair In Faridabad

Neha sharma said...

Bali Honeymoon Packages From Delhi
Bali Honeymoon Packages From Chennai
Hong Kong Packages From Delhi
Europe Packages from Delhi
Bali Honeymoon Packages From Bangalore
Bali Honeymoon Packages From Mumbai
Maldives Honeymoon Packages From Bangalore

Ciana Langham said...

Hello! I want to share with you one awesome website that helped me with writing papers. It's called essaywriters net I have some problems with writing and wasn't sure that I can do it alone.

Unknown said...
This comment has been removed by the author.
Mike Collins said...

Thanks for the great article. It's easy to understand and might be useful for beginner, especially for those who start coding. For me, it's complicated a bit so It would be great someone describes it in how to essays

Rainbow Training Institute said...

Thank you for sharing your awesome and valuable article this is the best blog for the students they can also learn.

Workday Online Training

Rainbow Training Institute said...

Such a nice blog, I really like what you write in this blog, I also have some relevant Information about if you want more information.

Workday HCM Online Training

Rainbow Training Institute said...

Thank you for sharing such a nice and interesting blog and really very helpful article

Workday Online Training

seocom said...

خدمة شراء الأثاث المستعمل
يحتار الكثير من العملاء عند استبدا أثاثهم القديم بأثاث أخر جديد إلى اين يذهبون أو يفعلون بأثاثهم المستعمل ولكن بعد الآن لا تقلق في حيال ذلك فحن من خلالنا قد قدما لكم محلات خاصة بعملية شراء اثاث مستعمل بالمدينة المنورة التي تعمل على شراء الأثاث المستعمل وإعادة تنظيفه وتلميعه وعرضه في معارض ومحلات الشركة التي تساعد فئة أخرى من العملاء في الحصول على أثات مستعمل ولكنه في نفس الوقت جديد لا يعيبه شيء، ونقدم إليكم أثاث مستعمل بالمدينة المنورة بأرخص الأسعار والتي تتناسب مع جميع عملاء الشركة الكرام.
كما أن الشركة تقدم لهم أفضل العروض والخصومات التي تروق لكثير من العملاء، فمن الآن وصاعد يمكنكم بيع وشراء الأثاث المستعمل بأفضل الأسعار التي تتناسب مع العملاء ومع أسواق المدينة المنورة.

Newton said...

HP Printer Support Phone Number usa

hp Printer Technical Support Phone Number

hp Printer Technical Support Number

hp Printer Tech Support

hp Tech Support

hp Printer Customer Support Number

HP Printer Customer Service Number

HP Printer Customer Care Number

HP Printer Contact Number

HP Printer Helpline Number

HP Printer TollFree Number

hp printer error code

hp printer error 0xc19a0003

scan from hp printer to pc