![]() |
Re: Quelltext kommentieren
<IRONIE>
33,33% -> 50% :kiss: </IRONIE> |
Re: Quelltext kommentieren
Zitat:
Zitat:
Nicht nur, dass der Code schwieriger lesbar wird (vor allem bei langen with-Blöcken und gerade da würde ein with überhaupt nur Sinn machen), es wird auch <IRONIE>unheimlich das Debuggen erleichtert</IRONIE&gt;... :wink: Ich finde, with sollte grundsätzlich nicht verwendet werden (in eigenem Code). Es gibt auch keinen Grund dafür... außer um anderen das Leben schwerer zu machen. Code sollte wenn möglich so geschrieben sein, dass er möglichst einfach und schnell zu verstehen, zu warten und zu debuggen ist. Auch der Cast in dem with-Block ist kein Argument, denn man kann sich einfach mit einer lokalen Variablen behelfen:
Delphi-Quellcode:
Wobei in diesem Beispiel der Cast in TListBox sowieso unnötig ist - mal nebenbei bemerkt - aber es ging ja jetzt ums Prinzip :wink:
Procedure TForm1.MalDas(Control: TControl);
Var rect: TRect; lst: TListBox; Begin rect.Left := 10; rect.Top := 10; rect.Right := 60; rect.Bottom := 60; // alles was hier drüber steht, kennen wir nicht - könnte ja eine lokale Variable sein *g* With Control As TListBox Do Begin Canvas.Brush.Color := clYellow; Canvas.FillRect(Rect); Canvas.Font.Color := clRed; Canvas.TextOut(Rect.Left + 2, Rect.Top, 'Hallo'); End; // diese Variante kommt ohne with aus... und es ist nicht wirklich mehr zu tippen... habe die // Zeichen jetzt aber nicht gezählt *g* lst := (Control as TListBox); lst.Canvas.Brush.Color := clYellow; lst.Canvas.FillRect(lst.Rect); lst.Canvas.Font.Color := clRed; lst.Canvas.TextOut(lst.Rect.Left + 2, lst.Rect.Top, 'Hallo'); End; Allerdings ist diese Diskussion jetzt grade etwas off-topic... Daher noch was zu der ursprünglichen Frage von coocky: Die schlechtesten Kommentare sind die, welche schlicht falsch sind (weil z.B. von irgendwoher kopiert und nicht angepasst wurden), da sie nicht nur ihren Sinn nicht erfüllen, sondern den Leser auch noch in die Irre führen... Daher Kommentare immer sehr sorgfältig schreiben! Schlicht sinnlos sind Kommentare, die einfach nur den Code in unsere Sprache übersetzen - Kommentare sind nicht dazu gedacht, dem Leser die Sprache beizubringen!
Delphi-Quellcode:
Kommentare sollen z.B. erklären, warum man etwas macht... oder warum gerade so und nicht anders... oder können einfach zur Strukturierung des Codes verwendet werden, wie Überschriften in einem Text... nur um mal ein paar wenige Beipiele zu nennen :wink:
// völlig sinnloser Kommentar...
Canvas.TextOut(Rect.Left + 2, Rect.Top, 'Hallo'); // Schreibe 'Hallo' auf die Zeichenfläche des Controls // das ist so wie... i := i + 1; // erhöhe i um 1
Delphi-Quellcode:
So... das mal so als Anregung :wink:
// Hierdurch soll erreicht werden, dass.... blabla...
// // Diese Variante wurde gewählt, weil... blabla... // // ACHTUNG: // Es wird hier nicht überprüft, ob Items.Objects[Index] auch in TColor gecastet werden kann! // Es sollte unbedingt noch eine entsprechende Prüfung eingebaut werden und im Falle eines ungültigen Wertes // eine festgelegte Standardfarbe verwendet werden! // // TODO: Prüfung auf gültigen Farbwert in Items.Objects[Index]! (<-- Dies erzeugt einen Eintrag in der Delphi-ToDo-Liste) // with Control as TListBox do begin Canvas.FillRect(Rect); Canvas.FontColor := TColor(Items.Objects[Index]); Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]); end; |
Re: Quelltext kommentieren
Klar sollen Kommentare das Ganze nicht in "unsere" Sprache übersetzen. Aber als Erklärung für Anfänger ist sowas dann doch geeignet
|
Re: Quelltext kommentieren
Zitat:
Endlich einer, der auf der selben Wellenlänge schwimmt wie ich. :hello: :hi: |
Re: Quelltext kommentieren
Hallo s-off, Hallo Phoenix,
Zitat:
jkr |
Re: Quelltext kommentieren
Hallo Jürgen,
was möchtest Du mir jetzt mitteilen? Zitat:
Zitat:
Zitat:
Mein Beispiel sollte zeigen, dass, wenn meine Annahme, dass Rect eine Variable ist, zutrifft, diese gezogen wird, - und das tut es - da gibt es nichts dran zu rütteln. |
Re: Quelltext kommentieren
Hallo s-off,
ich hatte Phoenix so verstanden (und tue das noch immer), dass er von einem vorhandenen Property TListBox.Rect ausging, das innerhalb der with-Anweisung eine eventuell vorhandene lokale Variable Rect versteckt. Ich war davon ausgegangen, dass Du Zitat:
Dich hatte ich daher so verstanden, dass, auch wenn es ein TListBox.Rect gäbe, die lokale Variable Vorrang hätte und Du ein Gegenbeispiel zu Phoenix' Behauptung bringen wolltest. Meine Aussage war daher: Wenn Phoenix' Annahme wahr wäre, würde Dein Gegenbeispiel nicht zeigen, dass eine lokale Variable verwendet wird. jkr |
Re: Quelltext kommentieren
Huhu,
ok, dann war das ein klassischer aneinandervorbeiredner und wir haben alle auf unsere Art recht :zwinker: |
Re: Quelltext kommentieren
OT: Der arme coocky :wink:
... stellt eine einfache Frage und hat jetzt Kopfschmerzen... (Aber wenn es noch Fragen gibt, trau Dich trotzdem wieder! :lol: ) stahli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz