AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Quelltext kommentieren

Ein Thema von coocky · begonnen am 6. Mär 2008 · letzter Beitrag vom 7. Mär 2008
Antwort Antwort
Seite 2 von 2     12   
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: Quelltext kommentieren

  Alt 6. Mär 2008, 23:48
<IRONIE>
33,33% -> 50%
</IRONIE>
  Mit Zitat antworten Zitat
Tharon

Registriert seit: 19. Okt 2004
Ort: Frankfurt/Main
12 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 00:30
Zitat von gmc616:
Oho, so wie's scheint hab ich vergessen meinen Post in IRONIE-Tag zu setzten.

Dachte eigentlich, das mit dem Satz "Mehr läßt sich auch den 5 Zeilen nicht entnehmen" alles gesagt wäre.
Mag sein, dass Du das ironisch gemeint hast (was ich hoffe )... aber woher soll das ein Anfänger wissen??? Der denkt wahrscheinlich, so sollten die Kommentare wirklich aussehen...


Zitat von s-off:
Zitat von Phoenix:
Es könnte eine Variable Namens Rect geben, aber benutzt wird Control.Rect. Eine der bösen Fallen bei with...
Da muss ich DIr leider widersprechen; probier's aus:
Delphi-Quellcode:
Procedure TForm1.MalDas(Control: TControl);
Var
   Rect: TRect;
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;
End;
Hier wird die lokale Variable Rect zugrunde gelegt.
Also... with gehört IMHO mit zu den schrecklichsten Sprachkonstrukten überhaupt *schauder*
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&lt;/IRONIE&amp;gt;...

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:
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;
Wobei in diesem Beispiel der Cast in TListBox sowieso unnötig ist - mal nebenbei bemerkt - aber es ging ja jetzt ums Prinzip

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:
// 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
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

Delphi-Quellcode:
// 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]! (&lt;-- 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;
So... das mal so als Anregung
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#13

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 09:13
Klar sollen Kommentare das Ganze nicht in "unsere" Sprache übersetzen. Aber als Erklärung für Anfänger ist sowas dann doch geeignet
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 09:16
Zitat von Tharon:
schnip - schnap
Ich gebe Dir in allen erwähnten Punkten volle Zustimmung.

Endlich einer, der auf der selben Wellenlänge schwimmt wie ich.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
81 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 09:49
Hallo s-off, Hallo Phoenix,

Zitat von s-off:
Zitat von Phoenix:
Es könnte eine Variable Namens Rect geben, aber benutzt wird Control.Rect. Eine der bösen Fallen bei with...
Da muss ich DIr leider widersprechen; probier's aus:
Delphi-Quellcode:
Procedure TForm1.MalDas(Control: TControl);
Var
   Rect: TRect;
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;
End;
Hier wird die lokale Variable Rect zugrunde gelegt.
Phoenix hat im Prinzip Recht -- wenn TListBox ein Property Rect hätte, würde die lokale Variable versteckt. s-offs Beispiel beweist hier nichts, denn erst durch sein Hinzufügen einer lokalen Variable wird das Beispiel kompilierbar. Die ursprüngliche Variante lässt sich wegen des fehlenden TControl.Rect bzw. TListBox.Rect gar nicht übersetzen.

jkr
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#16

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 11:36
Hallo Jürgen,

was möchtest Du mir jetzt mitteilen?
Zitat von jottkaerr:
Phoenix hat im Prinzip Recht -- wenn TListBox ein Property Rect hätte, würde die lokale Variable versteckt.
Hat es aber nicht.

Zitat von jottkaerr:
s-offs Beispiel beweist hier nichts, denn erst durch sein Hinzufügen einer lokalen Variable wird das Beispiel kompilierbar. Die ursprüngliche Variante lässt sich wegen des fehlenden TControl.Rect bzw. TListBox.Rect gar nicht übersetzen.
jkr
Ja, natürlich ist das nur durch Hinzufügen der Variable kompilierbar - ich habe auch nichts anderes behauptet:
Zitat von s-off:
Woher weißt Du, dass 'Rect' keine Variable ist, die ganz andere Maße hat, als das Control?
Wir wissen nicht, ob Rect eine Variable ist, oder nicht.

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.
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
81 Beiträge
 
Delphi 10.1 Berlin Professional
 
#17

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 12:00
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:
Es könnte eine Variable Namens Rect geben, aber benutzt wird Control.Rect. Eine der bösen Fallen bei with...
ebenfalls so interpretierst.

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
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#18

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 12:04
Huhu,

ok, dann war das ein klassischer aneinandervorbeiredner und wir haben alle auf unsere Art recht
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Quelltext kommentieren

  Alt 7. Mär 2008, 13:03
OT: Der arme coocky
... stellt eine einfache Frage und hat jetzt Kopfschmerzen...

(Aber wenn es noch Fragen gibt, trau Dich trotzdem wieder! )

stahli
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz