Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#404

AW: Eure besten Quellcode Kommentare...

  Alt 10. Jul 2017, 21:02
Ja, eine Abmahnung zum Beispiel !

Ich hatte mal ein mittelgroßes Projekt (ca. 200 Forms) übernommen, bei dem das grundsätzlich so gemacht wurde.
Die Anwender hatten sich daran gewöhnt nach einer durchgeführten Aktion noch mal zu prüfen ob es geklappt hatte.

Die Mitarbeiter in der Abteilung wunderten sich nur, warum immer wieder falsche, unvollständige oder defekte Datenbankeinträge da waren.
Da wurde jeden Tag auf der Datenbank "repariert".

Als ich das Projekt übernahm, habe ich alle except end; gesucht und entfernt.

Ergebnis:
Die Anwendung war unbenutzbar. Im Sekundentakt sind Fehlermeldungen aufgetreten.
Bei jedem Create eines Formulars ist eine GPF aufgetreten. (Fehler in der Basisklasse)
Viele Copy & Pase Fehler. (Ein Mal falsch gemacht und immer wieder kopiert.)

Durch einige einfache Suchen & Ersetzen Aktionen waren mehrere 100 Fehler weg.

Die Anwender mussten umlernen. Keine Fehlermeldung = hat geklappt.
Dafür gabs ab und zu Fehlermeldungen, die automatisch geloggt und abgearbeitet wurden.
Nach ein paar Monaten war es dann "fehlerfrei".

Und 2 Leute arbeitslos, da sie nicht mehr den ganzen Tag die Datenbank reparieren mussten

Ich hasse Programmierer die so was verwenden

Delphi-Quellcode:
try
  ...
except
end;
FixInsight mahnt das zum Glück an.

Ich empfehle immer nur den "erwarteten" Fehler zu prüfen. Es kann ja immer etwas unerwartetes passieren

Delphi-Quellcode:
// Zahl in Value in MeinObjekt.IntegerProperty ablegen
procedure Beispiel(const Value: string);
begin
  try
    MeinObjekt.IntegerProperty := StrToInt(Value);
  except
    // Fehlerbehandlung wegen 'Zwei ist kein gültiger Integerwert.'
  end;
end;

...

begin
  Beispiel('Zwei');
end;
In unterem Beispiel wird ein String einer Integer Eigenschaft eines Objekts zugewiesen.
Der Programmierer hat daran gedacht, dass auch ungültige Zahlen wie z.B. "zwei" übergeben werden können.
Aber er geht davon aus , das MeinObjekt immer existiert. Was wenn MeinObjekt = Nil ist?
Das Beispiel unten würde dann zumindest eine Exception (oder GPF) werfen.

Delphi-Quellcode:
// Zahl in Value in MeinObjekt.IntegerProperty ablegen
procedure Beispiel(const Value: string);
begin
  try
    MeinObjekt.IntegerProperty := StrToInt(Value);
  except
    on E: EConvertError do
    begin
      // Fehlerbehandlung wegen 'Zwei ist kein gültiger Integerwert.'
    end;
  end;
end;

...

begin
  Beispiel('Zwei');
end;
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat