Also, wen es darum geht ein Programm richtig zu kommentieren, dann wird es schwer, weil jeder Programmierer einen eigenen Stil hat. Sollte es prüfungrelevant sein, dann habt ihr das betsimmt durchgesprochen. Guck also in deine Unterlagen.
Ich kommentiere immer so wenig wie möglich, so viel wie nötig. Und das:
Delphi-Quellcode:
//x incrementieren
x := x + 1;
würde ich nicht kommentieren. Wozu? Was bringt e, Leser der Kommentar an zusätzlichen Informationen? Nichts. Man sollte nicht kommentieren wa sman macht, das sehe ich selber am Code, sondern warum man etwas macht. Aktuelles Beispiel aus meinen String-
DLL Artikel:
Delphi-Quellcode:
(******************************************************************************
* *
* DLLProg *
* Demo-Programm Strings und DLLs *
* *
* Copyright (c) 2006 Michael Puff [url]http://www.michael-puff.de[/url] *
* *
******************************************************************************)
program DLLProg;
{$APPTYPE CONSOLE}
uses
windows;
type
Tfunc1 =
function(s: PChar; Buffer: PChar; lenBuffer: Integer): Integer;
stdcall;
var
hLib: THandle;
s:
String;
func1: Tfunc1;
len: Integer;
Buffer: PChar;
begin
Buffer :=
nil;
hLib := LoadLibrary('
StringDLL.dll');
if hLib = 0
then
begin
Str(GetLastError, s);
Writeln(s);
readln;
exit;
end;
Str(hLib, s);
Writeln('
hlib: ' + s);
@func1 := GetProcAddress(hLib, '
func1');
if (
not Assigned(func1))
then
begin
Str(GetLastError, s);
Writeln(s);
readln;
exit;
end;
Str(Integer(@func1), s);
Writeln('
@func1: ' + s);
// Funktion aufrufen, um Größe des Buffers zu ermitteln
len := func1('
bar',
nil, 0);
Str(len, s);
Writeln('
len: ' + s);
try
// Speicher anfordern
GetMem(Buffer, len + 1);
// Funktion mit Buffer aufrufen
len := func1('
bar', Buffer, len + 1);
Str(len, s);
writeln(
String(Buffer)+ '
[' + s + '
]');
finally
// Speicher wieder freigeben
FreeMem(Buffer);
end;
readln;
end.
48, 55
Der ertse Teil bis zeile 47 ist gänzlich unkommentiert, weil man da sieht, was passiert:
DLL laden (LoadLibrary) Funktionsadresse holen (GetProcaddress) mit Fehlerbehandlung. Interessant ist der Funktionsaufruf in Zeile 49. Der Kommentar in Zeile 48 sagt warum ich dort diese Funktion aufrufe. Aus der Dokumentation würde hervorgehen, dass der Funktion im zweiten Parameter ein Buffer übergeben wird, in dem das Ergebnis landet. Und im Kommentar erkläre ich warum ich die Funktion erstmal mit nil aufrufe. Damit wird dann auch der Rest des Codes klar.
Die Kommentar in Zeile 55 und 60 sind eigentlich auch überflüssig, weil man an den Funktionen sieht, was da passiert. Sind aber dort drinne, weil sich der Code an jemanden richtet, der diese Vorgehensweise nicht kannte und somit sollte dort deutlich werden was da passiert. Diese Kommentare sind also quasi nur eine Hervorhebung. Der Kommentar in Zeile 60 ist dann wieder im Zuammenhang mit den Kommentar in Zeile 48 zu sehen. Mit diesen zwei Kommentaren wird deutlich, was in diesem Block passiert und wichtiger, warum es so passiert.