長いコード行と読みやすさ
-
03-07-2019 - |
質問
これはまったく問題のないC#コードであり、正しいURLであれば問題なく機能します。しかし、コードの可読性を低下させることにより、すべてが1行で行われます。
コードは次のとおりです:
return new StreamReader(WebRequest.Create(urlName).GetResponse().GetResponseStream()).ReadToEnd();
この種の近道のコード記述方法について、仲間の開発者の意見はどうなっているのでしょうか
解決
それを適切な名前のメソッドにプッシュし、おそらくそれを分割して、単一の文が数行にまたがるようにします。また、おそらくWebClientを使用します:
return new WebClient().DownloadString(urlName);
他のヒント
いいえ、それは本当に完璧なC#コードではありません。 StreamReaderは破棄する必要があるため、少なくとも using
ステートメントが必要です。
using (StreamReader reader = new StreamReader(WebRequest.Create(urlName).GetResponse().GetResponseStream()) {
return reader.ReadToEnd();
}
このコードは、コードをより多くの行に分割することで少し読みやすくなりますが、それほど多くはありません。
一般に、コンパクトなコードよりも読みやすいコードを好みます。各行に1つのステートメントがあると、コードが読みやすくなり、理解しやすくなります。例:
if (i <= 4) i = 4 - i;
これは、ifステートメントを1行に、その中のコードを別の行にすると読みやすくなります。ifステートメントには常に括弧があります:
if (i <= 4) {
i = 4 - i;
}
このコードはもちろんコンパクトな形式でも読みやすいですが、コードが複雑になるほど、各ステートメントを別々の行に置くことでより多くの利益が得られます。
...
私は時々、いくつかのものを1行にまとめることがあります。通常は、ストリームに内容をダンプするときですが、これほど多くはしません。
ほとんどのコンパイラ(少なくともc ++コンパイラ)は、定義が1回しか使用されない場合、多くの場合変数定義をインライン化します。そのため、一度だけ使用する場合は、変数を破棄します。 C#コンパイラは、おそらくその名前をその定義に置き換えるだけです。
読みやすさの問題に加えて、使用しているIDisposbleオブジェクトを破棄する必要があります。
1つのステートメント!= 1行、コードのフォーマットを改善することで読みやすさを改善できます。もちろん、他の人が高解像度モニターを使用していると想定すべきではありません。