1 / 13

CFC Best Practices, Tips, and Tricks

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

constance
Télécharger la présentation

CFC Best Practices, Tips, and Tricks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CFC Best Practices, Tips, and Tricks Raymond Camden jedimaster@mindseye.com

  2. Agenda • Basic (but real!) Examples • Best Practices (Suggestions) • Tips and Tricks • Resources

  3. Examples • www.cflib.org • CFCs serve as DB abstraction • ResourceBundle CFC • Localization Utility • SimpleCMS • Simple CMS based on CFCs

  4. 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>

  5. 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>

  6. 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>

  7. Understand Data Scopes • Variables • This • Arguments • Function Local

  8. Cache CFC Instances • CFC creation can be slow. • Use createObject/cfobject to create an instance. • <cfinvoke> (typically) works with new instances.

  9. Pseudo-Constructor • Any code not inside <cffunction>. • Useful to initialize variables. • BlueDragon has <cfconstructor>

  10. Dealing with Application Variables • Application.cfm and when it's run: • Flash Remoting/WS calls • Same folder • Don't rely on it! • Application CFC

  11. 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.

  12. 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)

  13. 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/

More Related