Длинные строки кода против читабельности - PullRequest
3 голосов
/ 03 марта 2009

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

Вот код:

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

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

Ответы [ 5 ]

5 голосов
/ 04 марта 2009

Нет, это не совсем идеальный код 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;
}

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

5 голосов
/ 03 марта 2009

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

return new WebClient().DownloadString(urlName);
0 голосов
/ 01 июля 2011

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

0 голосов
/ 03 марта 2009

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

0 голосов
/ 03 марта 2009

... YUCK.

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

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

...