150 likes | 429 Views
CFC Best Practices, Tips, and Tricks. Raymond Camden jedimaster@mindseye.com. Agenda. Basic (but real!) Examples Best Practices (Suggestions) Tips and Tricks Resources. Examples. www.cflib.org CFCs serve as DB abstraction ResourceBundle CFC Localization Utility SimpleCMS
E N D
CFC Best Practices, Tips, and Tricks Raymond Camden jedimaster@mindseye.com
Agenda • Basic (but real!) Examples • Best Practices (Suggestions) • Tips and Tricks • Resources
Examples • www.cflib.org • CFCs serve as DB abstraction • ResourceBundle CFC • Localization Utility • SimpleCMS • Simple CMS based on CFCs
Best Practices • Control white space generated by CFC <cfcomponent displayName="Example" output="false"> <cffunction name="test" returnType="string" access="public" output="false"> <cfreturn "This is a boring function."> </cffunction> </cfcomponent>
Best Practices • Supply Optional Attributes <cfcomponent displayName="Example2" output="false"> <cffunction name="test" returnType="string" access="public" output="false" hint="This function does blah using Foo's logic."> <cfargument name="argone" type="string" required="true"> <cfargument name="argtwo" type="numeric" required="false" default="0"> <cfreturn arguments.argone & " with the number " & arguments.argtwo> </cffunction> </cfcomponent>
Best Practices • Use the VAR scope! <cfcomponent displayName="Example3" output="false"> <cffunction name="test" returnType="string" access="public" output="false"> <cfargument name="argone" type="string" required="true"> <cfset var i = 0> <cfloop index="i" from=1 to=10> ..... </cfloop> </cffunction> </cfcomponent>
Understand Data Scopes • Variables • This • Arguments • Function Local
Cache CFC Instances • CFC creation can be slow. • Use createObject/cfobject to create an instance. • <cfinvoke> (typically) works with new instances.
Pseudo-Constructor • Any code not inside <cffunction>. • Useful to initialize variables. • BlueDragon has <cfconstructor>
Dealing with Application Variables • Application.cfm and when it's run: • Flash Remoting/WS calls • Same folder • Don't rely on it! • Application CFC
Inheritance/Super • Use for Is-A, not Has-A • In other words, inheritance is used when a CFC defines as "is a" relationship with it's parent. It should not be used for simple code re-use. • Super allows for a child method to extend a parent method.
Pass by Ref/by Value • Values passed to CFC methods follow the same rules as values passed to UDFs. • The following are passed by reference: • Structures • Queries • Other "comlpex" objects (including CFCs)
Resources • www.cfczone.org • cfcdev mailing list • Top Ten Tips article by Rob Brooks-Bilson • http://www.oreillynet.com/pub/a/javascript/2003/09/24/coldfusion_tips.html?page=1 • CFC Best Practices by Nathan Dintenfass • http://www.dintenfass.com/cfcbestpractices/