1

次の 2 つのブロックに論理的な違いはありますか? そして、他のフォームよりも正しいフォームはありますか? どちらも独自の機能に常駐しますが、ここでは省略しました。

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

2 に答える 2

7

はい。2 番目の例では、まったく同じ結果が得られます。ただし、変更するスコープを明示的に識別することで読みやすさが向上しました。これは良いことです。

ColdFusion は最初に LOCAL スコープを検索するため、ColdFusion の処理はあまり節約されません。ただし、コードはよりクリーンになりました。結果が CLIENT または COOKIE スコープに存在する場合、ColdFusion は最初に 4 つまたは 5 つの他のスコープを評価する必要がなくなります。

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

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

于 2010-12-15T15:43:15.657 に答える
2

1つの提案...変更:

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

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

コードが 1 行減り、何が起こっているのかがさらに明確になります。

于 2010-12-15T16:44:56.937 に答える