質問

次の2つのブロックに論理的な違いはありますか?そして、1つのフォームが他のフォームよりも正しいですか?彼らは両方とも彼ら自身の機能に存在するでしょう - 私がここで省略したものはありません。

    <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>
役に立ちましたか?

解決

はい。 2番目の例では、まったく同じ結果を作成しています。ただし、変更する予定の範囲を明示的に識別することにより、読みやすさが向上しました。これは良いことです。

ColdFusionは、最初にローカルスコープを検索するため、ColdFusionをあまり処理していません。ただし、コードは現在クリーンになりました。クライアントまたはCookieの範囲に結果が存在した場合、ColdFusionは最初に他の4つまたは5つのスコープを最初に評価しなければならないという作業を節約しました。

私はかつて「var result = 0;」を使用していました。変数を関数にローカライズするスタイルですが、すべてのスコープを明示的に識別して、すべての変数を正しくスコープし、コードを他の人にとって理解しやすくするようにします。

要約すると、コードはマシンとまったく同じですが、人間にとって理解しやすくなりました。

他のヒント

1つの提案...変更:

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

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

コードの行が1つ少なく、何が起こっているのかさらに明確です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top