Cis-Code-Bereinigung: Nachschärfung

8

Ich habe Resharper verwendet und es hat mir das Gefühl gegeben, dass ich überhaupt nicht in C # programmieren kann. es gab mir viele Vorschläge; Einige von ihnen sind:

1) SomeObject o = new SomeObject();

Resharper konvertiert zu:

%Vor%

2) this.Loaded += new RoutedEventHandler(MainPage_Loaded);

bis

%Vor%

3) Konvertiere meine Variablen und setze _ vor allen Instanzvariablen.

4) Entfernen des Namens des Klassenelternteils. Ich habe das auf Silverlight getestet.

%Vor%

bis

%Vor%

5) ersetzen Instanzvariable

%Vor%

bis

%Vor%

Sind all diese Dinge wirklich notwendig? Wird es wirklich die Effizienz meines Programms beeinflussen? Ich meine, was es bringt, indem ich meine Klassennamen durch var keyword ersetze. Schließlich wird auch var zur Kompilierungszeit durch den Klassennamen ersetzt. Tut es das, weil es programmiert wurde, oder wirken sich diese Dinge wirklich auf die eine oder andere Weise aus?

    
TCM 30.12.2010, 16:45
quelle

4 Antworten

8

Dieses Verhalten ist in den ReSharper-Einstellungen konfigurierbar. Es gibt eine Mischung aus Codebereinigungsregeln (z. B. ob Benutzungen durch var ersetzt werden sollen - tue ich nicht!), Codestilregeln (z. B. Variablennamen) und Formatierungsregeln (z. B. wie geschweifte Klammern platziert werden).

Ich habe einen Artikel geschrieben, der einen Überblick über diese Einstellungen gibt und wie sie verwendet werden können, um Codierungsstandards zu formen und dann automatisch durch Code-Bereinigung angewendet werden:

Ссылка

Am Ende des Tages beschäftigen sich viele von ihnen mit dem Codierungsstil und dem Entfernen von redundantem Code, sie haben keinen Einfluss auf den kompilierten Code. Sie können viele von ihnen so konfigurieren, dass sie Ihnen oder dem Codierungsstil Ihres Teams entsprechen.

    
Tim Lloyd 30.12.2010, 16:52
quelle
5
  

Sind all diese Dinge wirklich notwendig?

Keine sind notwendig.

  

Beeinflusst das wirklich die Effizienz meines Programms?

Es wirkt sich nicht auf den kompilierten Code aus, der die Leistung oder die Semantik überhaupt ändert.

  

Ich meine, was es bringt, indem ich meine Klassennamen durch var keyword ersetze. Nachdem alle var auch mit dem Klassennamen zum Zeitpunkt der Kompilierung ersetzt wurde.

Besser lesbarer Code.

  

Tut es das, weil es so programmiert wurde, dass es wirklich funktioniert oder wirken sich diese Dinge wirklich auf die eine oder andere Weise aus?

Ja. Diese sind konfigurierbar, wenn Sie sie nicht mögen.

1) Ist in Ordnung.

%Vor%

Das erste SomeObject ist redundant und nutzlos und mit var ist es nicht weniger lesbar und besser lesbar. Zusätzlich für komplexe Definitionen wie

%Vor%

es ist viel lesbarer als die Alternative. Dies kann jedoch übertrieben sein. Zum Beispiel

%Vor%

wird gegenüber

bevorzugt %Vor%

wie ist

%Vor%

über

%Vor%

Beachten Sie, dass

%Vor%

ist wirklich schlecht, weil es nicht sofort klar ist, was der Typ von i ist. Für nicht komplexe Definitionen bevorzuge ich explizite Typisierung gegenüber impliziter Typisierung. Außerdem möchten Sie manchmal

sagen %Vor%

Geben Sie explizit foo an IFoo ein, während var es als Foo eingeben würde.

2) Weniger Code ist im Allgemeinen besserer Code.

3) Ich hasse diesen Vorschlag. Ich hasse die führende Unterstreichung. Ich benutze die übliche Benennungskonvention für meine Member-Variablen und stelle sie zur besseren Übersichtlichkeit mit this voran. Ich würde das hier abstellen.

%Vor%

ist besser lesbar als

%Vor%

meiner Meinung nach.

4) Warte, warum macht es das? Ich bin etwas verwirrt von diesem. Weil es partiell ist und ein anderer Teil der Klassendefinition die Vererbung hat? Ich kann mir nicht vorstellen, dass dies in einem Fall geschieht, in dem sich die Semantik ändert. Ich würde das hier abstellen.

5) Ich mag diesen nicht (siehe 3.)

    
jason 30.12.2010 16:52
quelle
3

Sie sind nicht notwendig.

Sie folgen einem Kodierstandard, der durch Nachschärfung festgelegt wird. Das Schöne daran ist, dass Sie den Kodierungsstandard auf Ihre eigene Art und Weise konfigurieren können.

Das Schöne am Nachrüsten ist jedoch, dass Sie am Ende verschiedene Arten lernen, etwas zu tun, was Sie immer auf eine bestimmte Art getan haben.

    
Padu Merloti 30.12.2010 16:48
quelle
2

Alle diese Änderungen sollten keinerlei Auswirkungen auf den kompilierten CIL-Code haben - sie sind nur die Meinung von ReSharper zur Lesbarkeit des C # -Codes selbst.

Sie können alle Einstellungen an Ihre Bedürfnisse anpassen. In den meisten Fällen ist es eine Frage der persönlichen Vorlieben.

    
Joe Enos 30.12.2010 16:48
quelle

Tags und Links