Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

26.06.2012, 14:00

@ BlueCobold:

Würdest du mir vom Kommentieren abraten? Ich nehme nicht an, dass ich von Anfang an den perfekten Code schreiben werde und dieser somit Selbsterkärend sein wird.

Mfg

Jein. Wie TrommlBomml indirekt schon sagt, zwingt Dich das dazu saubereren Code zu schreiben, der besser verständlich ist. Das hat aber gerade für einen Anfänger das Problem, dass er irgendwann durch seinen naturgemäß ja doch noch relativ schlechten Code selber nicht mehr durch steigt. Spätestens da wäre ein Kommentar natürlich doch hilfreich. Das Ziel von gutem Code ist aber letztendlich, dass er ohne Kommentare auskommt.
Vor allem sollte aber man nicht anfangen Code zu kommentieren nach Schema-Dummy:

C-/C++-Quelltext

1
2
3
4
5
6
// Liste initialisieren
List<foo> bar = new List<foo>();

// Liste füllen
bar.add(2);
bar.add(4);

Das ist überflüssig, unnütz und unsinnig. Man sieht, dass da eine Liste initialisiert oder befüllt wird. Da gehört also kein Kommentar dran. Trotzdem ist dieses Beispiel schlecht lesbar, weil:
1) "bar" sagt nichts aus. Hieße die Liste "sampleList", dann wäre es schon klarer. Hieße sie z.B. "idsToIgnore", dann wäre sofort klar, welchen Zweck sie erfüllt.
2) 2 und 4 sind Konstanten, die nichts aussagen. Sinnvoll wäre hier eine const-Deklaration mit sprechenden Namen wie "AbstractType" (wahlweise "ABSTRACT_TYPE") und "DeprecatedType". Auch hier wäre dann sofort klar, worum es geht.
Genau solch schlechte und überflüssige Art des Kommentars findet man aber sehr sehr oft in Anfänger-Code, auch dann, wenn er eigentlich "ok" ist. Es kostet nur unnütz Zeit ihn zu schreiben und später wieder zu lesen. Gleich richtig ordentlich lesbaren Code schreiben und gut.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

22

26.06.2012, 15:12

Zitat

Das ist ein gutes Beispiel für schlechten Code. Wenn "DataTable[ i ].Process();" die Variable "Count" ändert, dann ist das ein Seiteneffekt, der da nicht hingehört.

Process löscht aber nicht unbedingt den Datensatz.
Der Datensatz wird verarbeitet und dabei evt.(!) gelöscht.

Zitat

Das ist überflüssig, unnütz und unsinnig

100% Zustimmung
Ich streite nur ab das Kommentare nie verwendet werden sollten und das kommentierter Code auf schlechte Struktur hinweist.

Klar ist guter Code selbsterklärend.
Das heißt aber nicht, dass man nicht kommentieren sollte.
Kommentare können das Verständnis fördern und eben speziell da wo nicht bloß stupide die Standardbibliothek\Framework angwendet wird, können(!) sie ungemein nützlich sein.

Ich habe bisher jedenfals eher zuwenig kommentierten Code(und das nicht wegen der Struktur) gesehen, als zuviel dokumentierten.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

23

26.06.2012, 15:47

Der Datensatz wird verarbeitet und dabei evt.(!) gelöscht.
aber das ist auch das Problem, welches angesprochen wurde
einerseits löscht der Datensatz sich aus der Tabelle (also ein Objekt greift auf das ihm übergeordnete Objekt zu und verändert dieses)
andererseits befindet sich in einem Datensatz (welcher vermutlich zur Speicherung von Informationen verwendet wird) Verarbeitungslogik (ohne weiteres Wissen über die Klassen, die da verwendet wurden, klingt das zumindest für mich sehr merkwürdig)

der Code würde beispielsweise an Ausdrucksstärke gewinnen, wenn die Methode "Process" mittels ihres Rückgabewerts mitteilt, ob der Datensatz weiter vorhanden sein soll (bzw. ob er gelöscht werden soll)
anhand der Rückgabewerts hätte er dann aus der Liste entfernt werden können
(und man könnte sich auch darüber streiten, ob dies eine Methode des Datensatzes sein sollte, oder eine "eigenständige")

Kommentare können das Verständnis fördern und eben speziell da wo nicht bloß stupide die Standardbibliothek\Framework angwendet wird, können(!) sie ungemein nützlich sein.

sofern ich dich nicht falsch verstanden habe: eine gute Dokumentation der Funktionen, Klassen und Methoden dürfte eigentlich ausreichend sein
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

24

26.06.2012, 16:05

Zitat


sofern ich dich nicht falsch verstanden habe: eine gute Dokumentation der Funktionen, Klassen und Methoden dürfte eigentlich ausreichend sein

Dokumentation soll nicht beschreiben wie etwas gemacht wird. Dokumentation ist nur dazu da die Verwendung zu erklären.

Das "Wie" gehört in Kommentare.

Zitat

der Code würde beispielsweise an Ausdrucksstärke gewinnen, wenn die Methode "Process" mittels ihres Rückgabewerts mitteilt, ob der Datensatz weiter vorhanden sein soll

Die Methode könnte zb.:
  1. Den Datensatz lösche
  2. Datensatz so lassen wie er ist.
  3. Den Datensatz auf mehrere Datensätze aufteilen
  4. ....

Der Sinn der Methode ist es ja, nach einer irgendwo zuvor definierten Regel die Daten zu verarbeiten.
Und natürlich sollte in der Dokumentation stehen, dass die Daten evt. gelsöcht etc. werden.
Aber ich glaube kaum, dass man, wenn man eine rückläufige Schleife findet, einen Blick auf die Dokumentation auf alle enthaltenen Befehle wirft.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

26.06.2012, 16:07

Das "Wie" gehört in Kommentare.

Das "Wie" gehört in den Code, wenn du mich fragst... ;)

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

26

26.06.2012, 16:09

Jap für das wie ist der Code da.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

27

26.06.2012, 16:10

Klar das "Wie" ist im Code.
Sonst würde es ja nicht funktionieren.
Und genau dort sollten sich auch die Kommentare zum besseren Verständnis befinden.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

28

26.06.2012, 16:13

Quellcode

1
2
3
4
5
6
7
8
9
10
bool IsPrime( uint number )
{
   for( int n=2; n<=sqrt(number); ++n )
   {
      if( number % n == 0 )
         return false;
   }

   return true;
}


Wo sollen da jetzt noch Kommentare hin die irgendwas zum Verständnis dieser Funktion beitragen?

Wie BlueCobol gesagt hat: Guter Code braucht keine Kommentare, weil er eben schon verständlich ist.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

29

26.06.2012, 16:19

Die Funktion ist intuitiv klar.
Man weiß eigentlich schon nach dem Funktionsname genau, was jetzt kommt.

Bei komplizierteren nicht standard Algos ist dies nicht immer der Fall.

Zitat

Guter Code braucht keine Kommentare

Schlechter Code braucht auch keine Kommentare.
Nützlich wären sie trotzdem.

babelfish

Alter Hase

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

30

26.06.2012, 16:22

Ach, da liegt das Problem.

Nochmal: Lieber schlechten Code vermeiden und guten, selbsterklärenden Code schreiben, als schlechten Code zu kommentieren.

Werbeanzeige