On Mon, 2004-12-13 at 12:19 +0100, Friedrich W. H. Kossebau wrote:
Hm, da hätte ich noch einen Verbesserungsvorschlag: #define CustomerNameId 3 oder enum { CustomerNameId = 3 }; oder static const int CustomerNameId = 3 ;
Enums haben den Vorteil, daß viele Debugger dann als Variablenwert "CustomerNameId" statt nur "3" stehen haben. #define für Konstanten und Makros sollte generell vermieden werden. Die Benutzung desselben ist ein guter Indikator für suboptimales Design.
Persönlich kapsele ich auch gerne einfache Datentypen in Strukturen oder Klassen (alternativ typedef, #define & Co.), denn ich finde if( Values.includes(Othervalue) ) lesbarer, weniger fehleranfällig und weniger nach Kommentar bittend als if( Value1 <= Othervalue && Value2 >= Othervalue ) Der Sinn lokaler Variablen wird auch schneller deutlich, wenn die Einheiten im Typnamen (mind. per typedef) eingearbeitet sind. Vergleiche FMeter Distance; und float Distance;
Meistens ist es auch so, daß die Werte andere Grenzen haben, als die eingebauten Datentypen. Über entsprechende Zugriffsmethoden kann man den Wertebereich prüfen und gegebenenfalls mit Exceptions um sich werfen.
Wenn Du die Bedeutung einer Variablen erklären mußt, solltest Du den Namen der Variablen auch noch einmal überdenken.
In Zeiten von Copy&Paste sind abgekürzte Variablennamen (vom unvermeidbaren i mal abgesehen) sowieso Quatsch.
Wichtige Kommentare sind IMHO vor allem welche zu Randbedingungen, z.B. default-Werte oder garantiertes Verhalten von Funktionen/Codeabschnitten.
+ preconditions + postconditions
Aber vermutlich verlasse ich gerade das Thema Deiner Anfrage?
<AOL/>
PS: "TODO" scheint ein anerkanntes Kennwort zu sein, das von vielen IDEs erkannt und deren nachfolgende Texte automatisch in eine Übersichtsliste extrahiert werden, z.B. // TODO: in eigene Funktion auslagern und mit X zusammenfassen
Mit IDEs kann man sehr viele produktivitätssteigernde Dinge anstellen, aber leider sind sie entweder auch nicht besser als vi+make oder sie sind umfangreich, bequem, schnarchlangsam und bloated. Außerdem sind die eingebauten Editoren meist eine Zumutung. Ich wollte mir neulich mal Anjuta antun, aber das erzeugt ja für ein Commandline-Executable-Projekt schon 40 Dateien und die lassen sich auch nicht mal eben so kompilieren. Den Fehler im Makefile kann man auch nicht ohne Kenntnisse von autoconf (oder was auch immer) beheben, denn es umfaßt schlappe 380 Zeilen. Die Entwickler von dem Teil müssen wirklich extremes Kraut rauchen... An und für sich sieht das Teil ja ganz nett aus, aber man müßte diesen autoconf-Mist abwählen können.
Eric