3

次のステートメントの if キーワードは、ReSharper によって緑色の下線が引かれています。

if (readOnlyFields.Contains(propertyName)) return false;

return base.CanWriteProperty(propertyName);

ReSharper は、次の変更を提案しています。

return !readOnlyFields.Contains(propertyName) 
    && base.CanWriteProperty(propertyName);

なぜこれが「より良い」のですか?現在のコードの方が読みやすく、結果は私の知る限り同じであるはずです。何かご意見は?

4

4 に答える 4

3

どちらか一方が他方よりも優れたパフォーマンスを発揮するという意味では、どちらも優れているわけではありません。(違いはまったく無視できます。)

特定のコーディング規則では、関数ごとに 1 つの return ステートメントを使用して、そのフローを簡単に理解できるようにすることが推奨されています。ただし、これは厳密で迅速なルールではありません。この場合、何が起こっているかは明らかです。提案が気に入らないが、他の人がコードを簡単に読めるようにしたい場合は、次のことをお勧めします。

if (readOnlyFields.Contains(propertyName)) return false;
else return base.CanWriteProperty(propertyName);

でも、あなたのやり方もいい。

于 2009-01-12T09:49:05.920 に答える
2

このような場合、「読みやすさ」は読者の個人的なスタイルに大きく影響されます。特定の形式で何かを書くことに慣れると、同じようにそれを読むことにも慣れます。

たとえば、私は ReSharper の提案に賛成します。しかし、それは個人的な好みの問題であり、行末の return ステートメントもあまり読みやすいとは思えないという事実と相まって. すべてのキーワードが行頭にあると、コードのスキャンがいくらか簡単になります。

繰り返しますが、「本当の答え」はありません。その提案を無効にして、慣れ親しんだものを使用できます。

于 2009-01-12T09:55:04.003 に答える
2

クイック修正メニュー (Alt+Enter) には、「修正オプション」(またはそのようなもの) があります。この特定の提案をヒントに変えることも、完全にオフにすることもできます。

個人的には、ReSharper の提案よりもオリジナルの方が好みです。

于 2009-01-12T09:28:50.937 に答える
2

関数から複数の戻り値があることを嫌う人もいます。

プログラミングにおけるすべての嫌悪感は、時間の経過とともに増減しているように見えます。この特定の嫌悪感は、現時点では特に流行していません。

于 2009-01-12T09:32:48.417 に答える