2010-08-19 9 views
7

Mögliche Duplizieren:
Commenting codeSollten wir ausführlich Kommentare schreiben?

C# ist Hochsprache und in diesen Tagen ich über Code gekommen sind, die weniger Kommentare hat als zu Code verglichen vor ein paar Jahren geschrieben. Sollten wir wirklich einen Code in hohem Maße kommentieren? Ich möchte nur die Gedanken von euch Leuten wissen.

+0

"weniger Kommentare als Code vor ein paar Jahren geschrieben"? Was? Haben Sie Statistiken, um dies zu untermauern? Ist das ein Trend? Welche Art von Datenerhebung haben Sie durchgeführt? Vielleicht sollten Sie diese Aussage auslassen. Oder vielleicht sollten Sie Beispiele geben. –

Antwort

9

Es gibt ein ganzes Kapitel gewidmet Bemerkungen in Robert C Martins ausgezeichnetes Buch Clean Code.

Einige Highlights:

  • Refactoring Bevorzugen über Kommentierung
  • Sie die offensichtliche
  • Halten Arten und Methoden kurze und konzentrierte sich nicht äußern (SRP)
10

Ich lebe nach 1 Regel; Kommentiere nicht offensichtlichen Code.

ich auch Code schreibt so offensichtlich wie möglich versuchen, damit ein großer Mangel an Kommentaren in meinem Code :)

+6

+1 sinnlose Kommentare verbergen auch nützliche. –

+0

ich folge zwei Regeln ... 1) nur Kommentar tricky Code 2) Vermeiden Sie das Schreiben kniffligen Code, wenn es notwendig ist –

0

Von den älteren Tagen Computing, kommentiere nicht alles, zum Beispiel:

if(a == 3) { // if a equals three, then... 
    cout << "a is three" << endl; // output "a is three" and a newline 
} // otherwise don't print anything 

a++; // increment a 

Kommentare sollten vor allem sinnvoll sein. Es empfiehlt sich, einen Kommentarkopf für jede Funktion oder Klasse anzugeben, aber nicht jede einzelne Zeile zu kommentieren.

0

Es ist nicht unbedingt die Menge der Kommentare, die Sie wollen, aber die Qualität. Kommentare sollten dem Code Verständnis verleihen.

1

C# haben beide einen imperativen Codierungsstil (für (jedes), während usw.) und einen deklarativen Stil (LINQ, Abfragen).

Der deklarative Stil ist viel lesbarer und braucht meiner Meinung nach weniger Kommentare. Jeder kann sehen, was dieser Code tun:

var males = from person in persons 
      where person.Gender == Gender.Male 
      select person; 

Aber mit einer for(each) Schleife Version es nicht, dass sichtbar sein kann (für etwas fortgeschrittenere vielleicht) und Kommentare benötigt.

=

Kommentar, wenn der Code für andere klar is'nt (und Sie).

+0

Die Lambda-Syntax ist noch offensichtlicher: 'var Männchen = Elemente.Wohin (e => e.Gender == Geschlecht .Male); ' – cjk

+0

@ck - Der Übergang von prozeduraler zu deklarativer zu Lambda-Syntax ist eine Progression der zunehmenden Verfeinerung der Sprache. Wenn der durchschnittliche ** Wartungsprogrammierer ** "durchschnittlich" bleibt, würde ich sagen, dass die ausgefeilteren Methoden tatsächlich mehr Erklärungen für sie als weniger erfordern könnten. Zum Beispiel, ohne LINQ zu kennen, können Sie dem Beispiel von lasseespeholt leicht folgen, da es so ausführlich ist. Aber in Ihrem Beispiel, ohne Lambda-Syntax zu kennen, muss ich fragen, was ist "e" und was ist "=>" und wie hängen sie zusammen? Es ist alles eine Frage, wer die Zielgruppe für Ihre Kommentare sind. –

0

Mein Vorschlag ist, Kommentare in einem nützlichen Schema zu schreiben, so dass die Kommentare von Dokumentation-generierenden Programmen wie Doxygen lesbar sind. Dies wird viel Zeit für das Schreiben von Dokumentationen einsparen.

0

1.) schreiben Code, der nicht

kommentiert werden müssen

2.), wenn Sie wirklich einen Kommentar muss dies oft ein Code Geruch - vielleicht können Sie etwas ändern, und Sie müssen es nicht kommentieren

1
+1

Das Quadratwurzelbeispiel war ein Fehler. Wenn der Algorithmus die falschen Antworten geben würde, wo würdest du mit der endgültigen Version anfangen? Die mittlere Version dokumentierte die Tatsache, dass die Newton-Raphson-Methode verwendet wurde, die dem Wartungsprogrammierer einen Ausgangspunkt für das Debugging geben würde. – JeremyP

+0

Ich stimme zu, aber das könnte leicht behoben werden. Ich denke das Prinzip hält. –

2

selbsterklärende Variablen und Methodennamen sind viel wichtiger als Kommentare. Wenn die Namen gut sind und die Architektur einfach zu verstehen ist, sind fast keine Kommentare erforderlich.

Also nur Kommentar Methodenheader und Parameter (für die automatische Generierung der Dokumentation) und innerhalb der Implementierung nur, wenn es ein komplizierter Algorithmus oder Design Pattern (manchmal ein Link zu einem Papier oder Wikipedia ist ausreichend) oder ein "Hack" oder Problemumgehung. Diese komplizierten und "schmutzigen" Teile des Codes versuche ich zu kommentieren sehr ausgiebig, denn das sind die Teile des Codes wo andere (oder Sie nach 6 Monaten) nur "WTF?" Denken, wenn sie das sehen Code - erklären Sie, warum Sie dies getan haben und was getan werden muss, um den Code zu verbessern. (Oft wissen Sie dies bei der Implementierung eines Hacks, aber es ist zu wenig Zeit oder Risiko (und somit Testaufwand) zu hoch).

+0

+1 für diesen Kommentarstil! – InSane

0

Setzen Sie Kommentare, die möglicherweise nicht einfach zu sein scheinen. Das bedeutet, dass Sie Kommentare hinzufügen müssen, um zu sagen, welcher Algorithmus Sie verwenden (z. B. während einer Sortiermethode möchten Sie erwähnen, ob Sie Bubble Sort oder Merge sort verwenden) oder in Fällen, in denen Sie Änderungen am ursprünglichen Algorithmus vornehmen eine unsortierte Liste in Gruppen von drei statt zwei, wenn Merge Sort).

Wenn jemand anders, der Ihren Code betrachtet, verwirrt sein kann und ein etwas kompetenter Programmierer ist, werfen Sie einen Kommentar ein, um zu erklären, was Sie tun und warum.

0

Ein Argument für umfangreiche Kommentare ist, dass wir alle verschiedene Stile und Methoden haben, wenn wir programmieren. Wo ich arbeite, könnten zwei oder drei von uns das gleiche Projekt teilen. Wenn ich eine Woche lang gehackt habe und sie mir ausgehändigt habe, hätten sie keine Ahnung, woher ich komme.

Ich neige dazu, zu kommentieren, wenn ich der Person, die den Code benutzt, etwas erklären muss. Sie wissen, wie man programmiert, sonst würden sie Code nicht ansehen.

//check to see if variable is X 
if ($variable == "x"){ 
    return true; 
}else{ 
    return false; 
} 

Ich würde nicht mit diesen Kommentar über Bord gehen, aber wenn ich glaube, ich habe etwas zu erklären, dann mache ich so

5

schreiben Kommentare, die erklären, warum Sie etwas tun, nicht wie Du machst es. Der Code sollte klar genug sein, damit andere das Wie verstehen können.

+0

Ich wünschte, ich könnte das zweimal verbessern. Das * warum * ist oft viel wichtiger und wertvoller als das * wie *! –

-1

Ja, Kommentare sind sehr nützlich, nicht nur für Sie, sondern auch für andere.

Verwandte Themen