これは多くのスタイルルールの1つであり、考えられるすべての可能なルールの中で最も重要なルールであるとは限りません。あなたの例は、intを含んでいるので、非常に魅力的ではありませんが、そのループ内に構築するのにコストのかかるオブジェクトがあり、ループの外側でオブジェクトを構築するための良い議論になる可能性があります。ただし、これはこのルールに対する良い議論にはなりません。最初に、ループ内で高価なオブジェクトを構築する必要のない他の場所がたくさんあり、次に、優れたオプティマイザ(そしてC#なので、優れたオプティマイザがあるので)ループの外に初期化を上げることができます。
このルールの本当の理由は、それがルールである理由が見えない理由でもあります。人々は何百、何千行もの関数を書いていて、Visual Studioが提供するようなサポートなしにプレーンテキストエディター(メモ帳など)で書いていたものです。その環境では、変数が使用されている場所から数百行離れた場所で変数を宣言すると、
if (flag) limit += factor;
フラグ、リミット、ファクターについての手がかりはあまりありませんでした。これを支援するために、ハンガリーの表記法のような命名規則が採用され、使用される場所に近いものを宣言するような規則も採用されました。もちろん、最近はリファクタリングがすべてであり、関数は一般に1ページよりも短いため、宣言されている場所と使用されている場所との間の距離を大きく取ることが難しくなっています。あなたは0から20の範囲で動作していて、この特定の例ではおそらく7で大丈夫ですが、ルールを作った人は7行離れるのが大好きで、700から誰かと話をしようとしていました。その上、Visual Studioでは、何にでもマウスを合わせてその型を確認したり、メンバー変数にしたりできます。つまり、それを宣言する行を見る必要性が少なくなります。
それはまだかなり良いルールであり、最近では破ることが非常に難しいものであり、遅いコードを書く理由として誰も主張しなかったものです。何よりも賢明である。