次の2つのコードブロックは論理的に同等ですか?
-
10-10-2019 - |
質問
次の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つ少なく、何が起こっているのかさらに明確です。
所属していません StackOverflow