2009-03-06 9 views
9

J'ai établi une liste de meilleures pratiques CFC à partager.Collection de pratiques optimales ColdFusion CFC?

Il existe de nombreux articles, mais j'ai pensé qu'il serait peut-être intéressant de rassembler ici tous les trucs et astuces qui ont été appris par l'expérience.

Je vais ajouter quelques liens ici pour que ça marche mais je pense que la meilleure chose ce ne serait pas de longs articles qui peuvent être googlé.

CFC Best Practices

Macromedia CFC Best Practices

Mise à jour: Cela a été fait dans un wiki communautaire

+0

1) Assurez-vous toujours vos résultats sont reproductibles avant avisez la presse ... – Shog9

+0

Cela ressemble peut-être à une question de wiki communautaire, peut-être? Dans tous les cas, je voudrais demander un nom amélioré, puisque je m'objecte à utiliser "meilleur" quand un mot plus précis est habituellement "recommandé" ou "à la mode", car ce qui est "meilleur" est presque toujours une question de le contexte. –

+0

Peter, fini et fait! –

Répondre

0

Avant d'utiliser le ColdBox Framework je ne vois pas de messages sur l'utilisation Momentos pour capturer les propriétés à ce moment-là; Cependant, maintenant tous mes beans ont une méthode getMomento() et setMomento(). Je voudrais encourager cela comme une meilleure pratique pour toute personne qui a besoin de transmettre des informations à partir d'un bean dans un autre objet DAO.

Dans mes tests, obtenir un momento est beaucoup plus rapide que de passer le bean et d'obtenir les propriétés. Voici un exemple:

<cfcomponent name="userBean" output="true" hint="The account bean holds getter/setter information for a user's account."> 

<cfproperty name="idUser"   required="true"  type="string" rules="noZeroLengthString,validEmail"  invalidMessage="failed_data_validation_email"    hint="Key matching the 'accounts' table."> 
<cfproperty name="loginEmail"  required="true"  type="string" rules="noZeroLengthString,validEmail"  invalidMessage="failed_data_validation_email"    hint="E-mail address."> 
<cfproperty name="password"   required="true"  type="string" rules="noZeroLengthString,validPassword" invalidMessage="failed_data_validation_password"   hint="Password stored in a SHA-512 hash."> 

<cffunction name="init" output="false" returntype="userBean" hint="Initalizes the userBean with default values."> 
    <cfset variables.instance    = structNew()> 
    <cfset variables.instance.IDUser  = 0> 
    <cfset variables.instance.loginEmail = ""> 
    <cfset variables.instance.password  = ""> 
    <cfreturn this> 
</cffunction> 

<!--- SET LOGIN ---> 
<cffunction name="setLoginEmail" access="public" returntype="void" output="false"> 
    <cfargument name="email" type="string" required="true" /> 
    <cfset variables.instance.loginEmail = trim(arguments.email) /> 
</cffunction> 
<cffunction name="getLoginEmail" access="public" returntype="string" output="false"> 
    <cfreturn variables.instance.loginEmail /> 
</cffunction> 

<!--- ID ---> 
<cffunction name="setIDUser" access="public" returntype="void" output="false"> 
    <cfargument name="id" type="numeric" required="true" /> 
    <cfset variables.instance.IDUser = arguments.id /> 
</cffunction> 
<cffunction name="getIDUser" access="public" returntype="numeric" output="false"> 
    <cfreturn variables.instance.IDUser /> 
</cffunction> 

<!--- PASSWORD ---> 
<cffunction name="setPassword" access="public" returntype="void" output="false"> 
    <cfargument name="password" type="string" required="true" /> 
    <cfset var pw = arguments.password> 
    <cfif len(pw) EQ 0> 
     <cfset variables.instance.password = ""> 
    <cfelse> 
     <!---><cfset variables.instance.password = hash(arguments.password, "SHA-512") />---> 
     <cfset variables.instance.password = arguments.password> 
    </cfif> 
</cffunction> 
<cffunction name="getPassword" access="public" returntype="string" output="false"> 
    <cfreturn variables.instance.password /> 
</cffunction> 

<!--- MOMENTO ---> 
<cffunction name="setMomento" access="public" returntype="void" output="false"> 
    <cfargument name="momento" type="struct" required="true" /> 
    <cfset variables.instance = arguments.momento> 
</cffunction> 
<cffunction name="getMomento" access="public" returntype="struct" output="false"> 
    <cfreturn variables.instance /> 
</cffunction> 

Cheers,

Aaron Greenlee My Site