Длинные строки кода против читабельности
Это прекрасно 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, который вы используете.