Длинные строки кода против читабельности

Это прекрасно C# код и отлично работает при условии правильного URL. Но все делается в одну строку за счет снижения читабельности кода.

Вот код:

         return new StreamReader(WebRequest.Create(urlName).GetResponse().GetResponseStream()).ReadToEnd();

Мне просто интересно, что думают коллеги-разработчики по поводу такого короткого пути написания кода

5 ответов

Решение

Вставьте его в метод с хорошо известным именем и, возможно, разбейте его так, чтобы один элемент растягивался на пару строк. Я также вероятно использовал бы WebClient:

return new WebClient().DownloadString(urlName);

Нет, это не совсем идеальный код C#. Вы должны располагать StreamReader, так что, по крайней мере, иметь using заявление:

using (StreamReader reader = new StreamReader(WebRequest.Create(urlName).GetResponse().GetResponseStream()) {
   return reader.ReadToEnd();
}

Этот код может получить немного читабельности, разделив его на несколько строк, но не очень.

Обычно я предпочитаю читаемый код перед компактным. Наличие одного оператора в каждой строке облегчает чтение и понимание кода. Например:

if (i <= 4) i = 4 - i;

Это становится более читабельным, если оператор if находится в одной строке, а код внутри - в отдельной строке, а оператор if всегда имеет квадратные скобки:

if (i <= 4) {
   i = 4 - i;
}

Этот код, конечно, довольно читабелен даже в компактной форме, но чем сложнее код, тем больше он выигрывает от размещения каждого оператора в отдельной строке.

Одно утверждение!= Одна строка, вы можете улучшить читабельность, улучшив форматирование вашего кода. Конечно, вы не должны предполагать, что другие люди используют мониторы с высоким разрешением.

...YUCK.

Иногда я объединяю несколько вещей в одну строку, обычно, когда я записываю вещи в поток, но никогда так много.

Большинство компиляторов (по крайней мере, компиляторы C++) часто включают встроенные определения переменных, если определение используется только один раз, поэтому, если вы используете одноразовое использование, отбрасывайте переменную. Ваш компилятор C#, вероятно, просто заменит его имя своим определением.

В дополнение к проблеме читабельности вы должны утилизировать любой объект IDisposble, который вы используете.

Другие вопросы по тегам