2009-03-03 12 views
3

Dies ist völlig in Ordnung C# -Code und funktioniert einwandfrei vorausgesetzt, korrekte URL. Aber alles wird nur in einer Zeile erledigt, indem die Lesbarkeit des Codes reduziert wird. HierLange Zeilen von Code vs Lesbarkeit

ist der Code:

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

ich gerade frage mich, was sind die Meinungen von anderen Entwicklern auf diese Art von Abkürzung Art des Schreibens Code

+0

Was genau ist Ihre Frage? –

+0

-1 Für nicht eine echte Frage. – GregD

+0

Nun, es ist sehr kompakt und sehr sehr sequenziell. Sie können eine Menge davon in asynchrone Workflows von Begin/End-invoke einbauen. – Henrik

Antwort

5

schieben Sie es in einem gut benannte Methode, und brich es vielleicht auf, so dass sich die einzelne Anweisung über ein paar Zeilen erstreckt. Ich würde wahrscheinlich auch WebClient verwenden:

return new WebClient().DownloadString(urlName); 
+1

Sie würden nach 3,5 Versionen denken würden sie bei mindestens eine statische Methode dafür gemacht :) – leppie

0

... YUCK.

Ich werde manchmal ein paar Dinge in eine Zeile kombinieren, normalerweise, wenn ich Sachen in einen Stream entleere, aber nie so viel.

Die meisten Compiler (zumindest C++ Compiler) werden oft inline Variablendefinitionen, wenn die Definition nur einmal verwendet wird, also wenn Sie eine einmalige Verwendung machen, Variable wegwerfen. Ihr C# -Compiler wird wahrscheinlich nur seinen Namen durch seine Definition ersetzen.

0

Zusätzlich zu dem Lesbarkeitsproblem sollten Sie alle IDispoble-Objekte, die Sie verwenden, entsorgen.

5

Nein, es ist nicht wirklich vollkommen in Ordnung C# -Code. Sie sollten die Stream verfügen, so dass zumindest eine using Aussage haben:

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

Dieser Code ein wenig Lesbarkeit gewinnen kann, indem sie in mehr Trennlinien, aber nicht sehr viel.

Generell bevorzuge ich lesbaren Code vor Kompaktcode. Mit einer Anweisung in jeder Zeile ist der Code leichter zu lesen und zu verstehen. Zum Beispiel:

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

Dies auf einer Zeile lesbarer mit der if-Anweisung wird und der Code in es in einer separaten Zeile, mit der if-Anweisung immer mit Klammern:

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

Dieser Code ist von Natürlich ist es sogar in der kompakten Form lesbar, aber je komplexer der Code ist, desto mehr profitiert er davon, jede Aussage auf eine separate Zeile zu setzen.

+0

Ich stimme dir zu, Natürlich sollte ich das Objekt, das IDisposable Schnittstelle implementiert, entsorgen. – Shiva

0

Eine Aussage! = Eine Zeile, Sie können die Lesbarkeit verbessern, indem Sie die Formatierung Ihres Codes verbessern. Natürlich sollten Sie nicht davon ausgehen, dass andere Leute hochauflösende Monitore verwenden.