20

Resharper がほとんどの変数をコード内の実際の型ではなく var 型に変更することを望むのはなぜですか?

4

8 に答える 8

31

それは単なるオプションです。無効にすることができます:

ReSharper -> オプション -> コード・インスペクション -> インスペクションの重大度 -> コードの冗長性 -> 可能であれば「var」キーワードを使用: これを「表示しない」に変更します

各方向に移動するコンテキスト (電球) オプションもあります。これは、ReSharper -> オプション -> 言語 -> C# -> コンテキスト アクション -> 「明示的な型宣言を 'var' に置き換えます」の下にあります。

于 2008-11-17T20:30:51.320 に答える
21

Hadi Hariri が Resharper 6.x を紹介しているビデオを見ました。彼の推論は、ユーザーに「var」の使用を強制している場合、実際にはより意味のある方法で変数に名前を付けることをユーザーに強制しているということです。そうすれば、すべての名前が読みやすく、より意味のあるものになります。

于 2011-08-30T17:23:52.757 に答える
6

デフォルトでは、このタイプの宣言は「緑色の波線」になります。

Person p = new Person();
^^^^^^

繰り返しのため。

推測できる場合は、(小さな緑色のアンダースコア) var も提案されます。

Person p = repository.GetPerson(1);
¯¯¯

この場合、GetPerson メソッドの戻り値の型から推測できます。

Jon Skeet が述べたように、resharper のオプションでこれらの提案を無効にすることができます。

于 2008-11-17T20:33:38.630 に答える
5

あなたの質問に答えるために... JetBrainsの誰かがそれが「好ましい」方法であると判断したからです。

それを変更するには、ジョンの答えに従ってください。さらに、ReSharper オプションのコード クリーンアップ セクションで、コード クリーンアップ (私がよく使用する) を実行するときの ReSharper の動作を変更することもできます。「明示的なタイプを使用する」に設定します。

于 2008-11-17T20:33:16.760 に答える
3

これは、JetBrains コード検査 wiki に関する説明です: http://confluence.jetbrains.net/display/ReSharper/Use+%27var%27+keyword+when+initializer+explicitly+declares+type

クラスが右側に表示されている場合は、左側にも表示する必要はほとんどありません。また、クラス名が非常に長い場合は、スペースを節約し、コードを削減します。個人的には、string や int などの単純な型には var を使用しませんが、var dictionary = new Dictionary<string, int>()スペースを節約するために使用します。

于 2012-11-23T09:28:59.403 に答える
1

両方の方法を示唆していると思います。明示的な型がある場合は、それを var に変更できます。var がある場合は、それを明示的に変更できます。もちろん、それが適切であると思われる場合は、変更をより迅速に行うためです。

たとえば、コレクションを反復するときなど、型が「暗黙的」である場合 (もちろん、Resharper が提案する場合、コンパイラーにとっては常に暗黙的です) およびその不在の場合は、ループ変数に vars を使用することをお勧めします。コードの可読性が低下することはありません。また、ジェネリックで非常に長くなる可能性があるいくつかの宣言を短くするのが好きです。IList(IDictionary(SomeType)) myVar = List(IDictionary(SomeType)) () のように、代入の左側に「var」と書いておけば、それほど緩みません。

(括弧を山かっこに置き換えます;)

もちろん、読みやすさを向上させるために vars を慎重に使用するようにしますが、その逆ではありません。

于 2008-11-17T20:35:57.113 に答える
1

私にとって、それは間違いなく価格の価値があります...(たとえ自分で支払わなければならなかったとしても)。ただし、VSが遅くなる可能性があります。5000 行のコードなどのファイルがあると、非常に遅くなる可能性があります。

しかし、私がまだ得ていないのは、チームでそれを使用しているのはなぜ私だけなのかということです...

于 2008-11-17T20:41:53.090 に答える
0

Vars は、特にジェネリックを使用する場合に、メソッド内でコードを読みやすくするのに役立ちます。

ジョンが言うように、それは単なるオプションです。

于 2008-11-17T20:33:12.017 に答える