AW: Eure besten Quellcode Kommentare...
Wenns ginge, würde ich Dir dafür ein "Sternchen" geben, MaBuSE! :thumb:
|
AW: Eure besten Quellcode Kommentare...
Zitat:
|
AW: Eure besten Quellcode Kommentare...
Zitat:
|
AW: Eure besten Quellcode Kommentare...
Code:
(kein if, keine Prüfung)
allControllersHealthy := True; // Wir sind Optimisten |
AW: Eure besten Quellcode Kommentare...
...da ist jeder Kommentar unötig. :cry:
In dem aktuellen Projekt gefunden:
Delphi-Quellcode:
(Namen zum Schutz des Verursachers geändert :-D)
if (not Data.FDFix.Active) then
begin Data.FDFix.Active := False; end; |
AW: Eure besten Quellcode Kommentare...
Zitat:
|
AW: Eure besten Quellcode Kommentare...
Zitat:
Schau die das Beispiel mal an. Ok ist etwas konstruiert, aber so was in der Art habe ich leider schon gesehen. :( Nur wenn Active False ist und nochmal False gesetzt wird, passiert was. Du entfernst bei einem Refactoring diese Zeilen und in der Produktion beim Kunden knallts. Aus diesem Grund sollte so was kommentiert werden !!!. :duck:
Delphi-Quellcode:
Ach ja das Programm bringt folgende Ausgabe:
program Data;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; type TFDFix = class private FActive: Boolean; procedure SetActive(const Value: Boolean); published property Active: Boolean read FActive write SetActive; end; var FDFix: TFDFix; { FDFix } procedure TFDFix.SetActive(const Value: Boolean); begin if Value = FActive then WriteLn('Erwarte das Unerwartete ;)') // In dieser Zeile könnte z.B. etwas wichtiges gemacht werden, was einen Fehler verhindert. else FActive := Value; end; begin try WriteLn('Start'); FDFix := TFDFix.Create; try WriteLn('1: Data.FDFix.Active := True;'); Data.FDFix.Active := True; // hier passiert nix if (not Data.FDFix.Active) then begin WriteLn('2: Data.FDFix.Active := False;'); Data.FDFix.Active := False; // das wird ja nie aufgerufen end; WriteLn('3: Data.FDFix.Active := False;'); Data.FDFix.Active := False; // hier passiert nix if (not Data.FDFix.Active) then begin WriteLn('4: Data.FDFix.Active := False;'); Data.FDFix.Active := False; // ups end; finally WriteLn('Ende'); FDFix.Free; end; ReadLn; except on E: Exception do WriteLn(E.ClassName, ': ', E.Message); end; end.
Code:
Start
1: Data.FDFix.Active := True; 3: Data.FDFix.Active := False; 4: Data.FDFix.Active := False; Erwarte das Unerwartete ;) Ende |
AW: Eure besten Quellcode Kommentare...
Delphi-Quellcode:
Wer weiß denn schon, ob
if (not Data.FDFix.Active) then
begin Data.FDFix.Active := False; end;
Delphi-Quellcode:
auch wirklich gleich
not True
Delphi-Quellcode:
ist? Der Code ist vermutlich schon für den Einsatz auf einem Quanten-Computer vorbereitet. (Schönen Gruß von Erwin Schrödinger)
False
|
AW: Eure besten Quellcode Kommentare...
Zitat:
PS: FDFix war eine Query :stupid: |
AW: Eure besten Quellcode Kommentare...
Zitat:
Delphi-Quellcode:
Das sieht doch gleich viel wichtiger aus. :thumb: :stupid:
...
if Data.FDFix.State in [dsInactive, dsOpening] then Data.FDFix.Close; ... Ist aber faktisch das selbe, da:
Delphi-Quellcode:
ps: Falls es niemand gemerkt hat, dieser Beitrag ist ironisch gemeint. haentschman hat Recht. Das ist natürlich Blödsinn.
...
function TDataSet.GetActive: Boolean; begin Result := not (State in [dsInactive, dsOpening]); end; ... procedure TDataSet.Close; begin Active := False; end; ... |
AW: Eure besten Quellcode Kommentare...
Da liegt das Problem aber in der Implementierung des Setters:
Zitat:
Delphi-Quellcode:
(Hier im Browser editiert, daher bitte die Einrückungen dazu denken)
procedure TFDFix.SetActive(const Value: Boolean);
begin if Value = FActive then Exit else begin FActive := Value; try WriteLn('Start'); FDFix := TFDFix.Create; try (* ... *) finally WriteLn('Ende'); FDFix.Free; end; ReadLn; except on E: Exception do WriteLn(E.ClassName, ': ', E.Message); end; end; end. |
AW: Eure besten Quellcode Kommentare...
Zitat:
Delphi-Quellcode:
Borland/CodeGear/Embarcadero machen das auch so:
procedure TFDFix.SetActive(const Value: Boolean);
begin if Value <> FActive then begin FActive := Value; // ... end; end; Ein schönes Beispiel ist TMargins und TPadding:
Delphi-Quellcode:
// Quelltext gekürzt !!!
TMarginSize = 0..MaxInt; TMargins = class(TPersistent) private FLeft, FTop, FRight, FBottom: TMarginSize; procedure SetMargin(Index: Integer; Value: TMarginSize); protected procedure Change; virtual; published property Left: TMarginSize index 0 read FLeft write SetMargin default 3; property Top: TMarginSize index 1 read FTop write SetMargin default 3; property Right: TMarginSize index 2 read FRight write SetMargin default 3; property Bottom: TMarginSize index 3 read FBottom write SetMargin default 3; end; TPadding = class(TMargins) published property Left default 0; property Top default 0; property Right default 0; property Bottom default 0; end; procedure TMargins.SetMargin(Index: Integer; Value: TMarginSize); begin case Index of 0:if Value <> FLeft then begin FLeft := Value; Change; end; 1:if Value <> FTop then begin FTop := Value; Change; end; 2:if Value <> FRight then begin FRight := Value; Change; end; 3:if Value <> FBottom then begin FBottom := Value; Change; end; end; end; |
AW: Eure besten Quellcode Kommentare...
Delphi-Quellcode:
try
[... code hier ...] except // ist mir sowas von egal end; |
AW: Eure besten Quellcode Kommentare...
Delphi-Quellcode:
¯\_(ツ)_/¯
try
[... code zum schreiben in eine Log Datei...] except // Well, what should we do? What is best practice here? end; Sherlock |
AW: Eure besten Quellcode Kommentare...
Jetzt nicht direkt Quelltext-Kommentar, aber dennoch einen Platz in dieser Hall of Shame wert: Microsoft
Zitat:
|
AW: Eure besten Quellcode Kommentare...
Neue Firma, neuer Quelltext - zwar kein Kommentar, aber ich bin gerade drüber gestolpert und wollte es euch nicht vorenthalten.
Da kommt einiges zusammen. :shock:
Delphi-Quellcode:
property ThresholdHyst :Double read FThresholdHyst write GetTresholdHyst;
|
AW: Eure besten Quellcode Kommentare...
böse...:shock:
|
AW: Eure besten Quellcode Kommentare...
Zitat:
Was ist daran lustig? (ernstgemeinte Frage) Ich sehe nur einen Tippfehler: GetTresholdHyst -> GetThresholdHyst Ok, jetzt hab' ich's auch. Der hat gedauert. |
AW: Eure besten Quellcode Kommentare...
Genau, ich rätsele auch noch über den Witz :gruebel:
EDIT: Jetzt hab ichs verstanden :-D |
AW: Eure besten Quellcode Kommentare...
write GetTresholdHyst
Wobei die Signatur ja stimmen muss bei den Methoden. Vielleicht wirklich nur ein Tippfehler. Und ich bleibe dabei, Delphi-Properties haben keinen Zweck, sie sind nur Fehlerquelle und machen das Leben unnötig schwer. |
AW: Eure besten Quellcode Kommentare...
Ich würde auf schiefgegangenes Refactoring tippen.
|
AW: Eure besten Quellcode Kommentare...
Jo, Signatur war von dem Setter, aber man stutzt doch schon ungläubig beim ersten Lesen.
Über die historischen Hintergründe kann man nur spekulieren. Ein Tippfehler ist wahrscheinlich. |
AW: Eure besten Quellcode Kommentare...
Wir haben hier ja sogar kollektiv drüber weg gelesen obwohl wir direkt drauf gestoßen wurden. Insofern ist es IMHO ein typischer Fall von Flüchtigkeitsfehler ohne technische Relevanz und könnte per Refactoring sicher leicht behoben werden. Seh ich jetzt nicht ganz so kritisch.
|
AW: Eure besten Quellcode Kommentare...
Jup, eine Rakete stürzt davon nicht ab. Finde es halt nur erstaunlich, weil das anscheinend schon seit Anbeginn der Zeit drin ist und noch nie jemanden hier aufgefallen ist.
|
AW: Eure besten Quellcode Kommentare...
Ich habe zu erst den Tippfehler gesehen. Beim Getter fehlt ein H.
|
AW: Eure besten Quellcode Kommentare...
Zitat:
Und wahrscheinlich immer noch im stummen Kollektiv, da sich die anderen nicht outen wollen :hi: |
AW: Eure besten Quellcode Kommentare...
Die Rätselauflösung wurde aber schon in #460 gegeben :-)
Wobei mich das Ganze schon an eine Endlosdiskussion mit meinen Kollegen zum Theme Code Style Guides erinnert. Gabs ja hier auch schon. Prinzipiell kann man ja alles benennen wie man will, aber der Wartbarkeit halber sollte man sich an gewisse Regeln halten. Finde mal einen Setter namens Get... zum Bsp. in MMX und ähnlichen Methodenlisten. Da wirst verzweifeln. Oder aber ein Fall von "Code Camouflage Guide - Wie man sich unersetzlich macht" :lol: |
AW: Eure besten Quellcode Kommentare...
Zitat:
Es ist "Montag", da braucht man manchmal etwas länger. ("*" kann man auch durch jeden anderen beliebigen Tag ersetzen:stupid:) |
AW: Eure besten Quellcode Kommentare...
Ist schon faszinierend... TiGü hat da eine richtige Tretmine ausgelegt :-)
|__| <-- Achtung, Fettnapf! Bitte treten Sie nur nach sorgfältiger Planung, ausreichend Vorwarn- und Bedenkzeit sowie angemessen hochwertigem Schuhwerk hier hinein :lol: |
AW: Eure besten Quellcode Kommentare...
Hätte man den MMX benutzt wäre das wohl nicht passiert.
|
AW: Eure besten Quellcode Kommentare...
Zitat:
|
AW: Eure besten Quellcode Kommentare...
Es ist Sonntag und ich schlendere durch die DP.
Das fehlende "h" ist mir durchgegangen, und das "Get.." ist ungewöhnlich, wahrscheinlich wird der Wert aus irgendeinem obskuren Topf geholt? :?: Ist auf jeden Fall ein Hingucker. Gruß K-H |
AW: Eure besten Quellcode Kommentare...
JEDI JVCL: JvMemoryDataset.pas - Zeile 426 (frisch von Github):
Delphi-Quellcode:
STATUSNAME = 'C67F70Z90'; (* Magic *)
WTF? |
AW: Eure besten Quellcode Kommentare...
Zitat:
Dort wird auf Mantis Issue #1447 verwiesen, wo die Codeänderungen ursprünglich gepostet wurden. Hier wird ein internen Statusfeld benutzt, dem dieser String als Feldname verpasst wird. Woher kommt dieser Wert? Die Initialen des Authors sind CFZ - die ASCII Codes für C, F und Z sind 67, 70 und 90. :U+1F92F: (exploding head emoji) :P |
AW: Eure besten Quellcode Kommentare...
...🤯...
|
AW: Eure besten Quellcode Kommentare...
Delphi-Quellcode:
Jetzt kann man sich aussuchen, was man schlimmer findet:
initialization
// UnregisterExpectedMemoryLeak ; end.
|
AW: Eure besten Quellcode Kommentare...
Zitat:
Mich würde interessieren wo dann die Register* Funktion aufgerufen wird :stupid: Ohne mir jetzt die Funktion angesehen zu haben, erwarte ich bei einem Unregister* Aufruf vorher einen Register* Aufruf. Wenn nicht, ist die Benamung der Funktion ... :thumb: |
AW: Eure besten Quellcode Kommentare...
Zitat:
Zitat:
Delphi-Quellcode:
, zu der es sogar eine Hilfe gibt:
RegisterExpectedMemoryLeak
Zitat:
|
AW: Eure besten Quellcode Kommentare...
Die Memory-Leaks werden sicher nicht absichtlich herbeigeführt, aber wenn du beispielsweise in denen Unit-Tests drin hast dass die Tests fehlschlagen wenn nach Ausführen des Tests mehr Objekte im Speicher sind als vorher dann ist diese Routine dein Freund.
|
AW: Eure besten Quellcode Kommentare...
Oder Lecks von Third-Party-Komponenten, die dir nicht immer unnötig das FastMM4-Log zumüllen sollen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 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