Question

Y at-il une différence logique entre les deux blocs suivants? Et est-il une forme plus correcte que l'autre? Ils seraient tous deux résider sur leur fonction -. Quelque chose que j'omis ici

    <cfset local.result = 1 />
    <cfset local.i = 1 />
    <cfloop from="1" to="5" index="i">
        <cfset result = result * i />
    </cfloop>

    <cfset local.result = 1 />
    <cfset local.i = 1 />
    <cfloop from="1" to="5" index="i">
        <cfset local.result = local.result * local.i />
    </cfloop>
Était-ce utile?

La solution

Oui. Dans votre deuxième exemple, vous faites le résultat exact même; Cependant, vous avez une meilleure lisibilité en identifiant explicitement la portée vous avez l'intention de modifier -. ce qui est une bonne chose

ColdFusion, recherche d'abord la portée locale, donc, vous n'avez pas enregistré beaucoup de traitement ColdFusion; cependant, le code est plus propre maintenant. Si le résultat existait dans le client ou la portée COOKIE vous avez enregistré ColdFusion le travail d'avoir à d'abord évaluer quatre ou cinq autres champs d'application.

Une fois, je l'habitude d'utiliser le « résultat = 0 var; » style de localisant variables à une fonction, mais, je maintenant identifier explicitement tous mes champs d'application pour aider à assurer que j'ai correctement scope toutes les variables et rendre le code plus facile à comprendre pour les autres.

Pour résumer, le code est exactement la même chose à la machine, mais est maintenant plus facile à comprendre pour l'être humain.

Autres conseils

Une suggestion ... changement:

<cfset local.i = 1 />
<cfloop from="1" to="5" index="i">

à

<cfloop from="1" to="5" index="local.i">

une ligne de code moins, encore plus clair ce qui se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top