Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#23

AW: Try - except - finally

  Alt 1. Okt 2013, 07:03
Natürlich. Nur gehören meiner Meinung nach prinzipiell Fehlerbehandlung UND Aufräumarbeiten zu der Sache.
Vom Abstraktionsniveau her passt das einfach nicht. Das eine ist Resourcenschutzblock, das andere eine Fehlerbehandlung der Sicherungsschicht.

Zitat:
Wenn du einen Mittelwert bildest...
heißt die Methode vermutlich 'BildeMittelwert' und fertig.
Zitat:
Es gibt einen Punkt, an dem das Aufteilen nicht mehr zu mehr Übersichtlichkeit, sondern zum Gegenteil führt.
Den zu finden ist leicht: Wenn es lächerlich wird (wie bei deinem Beispiel), lässt man es.

Aber was ist hiermit:
Delphi-Quellcode:
data := Socket.SendCmd(IPCMD_RECV, OPTION_TRACERT or OPTION_FOOBAR or OPTION_BLAFASEL, 4912);
OtherComplicatedStuff.MagicFunction(data);
Versteht keine Sau. Aber das hier versteht jeder:
Delphi-Quellcode:
data := ReadDataFromSocket();
EncryptAndForwardToReceipient(data);
Die Implementierung der beiden Methoden interessiert ja nicht, wenn es nur ums Verständnis geht. Aber wer's wissen will:
Delphi-Quellcode:
Function TMyClass.ReadDataFromSocket() : TData;
Begin
  Result := Socket.SendCmd(IPCMD_RECV, OPTION_TRACERT or OPTION_FOOBAR or OPTION_BLAFASEL, 4912);
End;

Procedure TMyClass.EncryptAndForwardToReceipient(data : TData);
Begin
  EncryptAndForwardToReceipient(data);
End;
Ich habe den Code durch das (in deinen Augen lächerliche) Refactoring kommentiert, und zwar gänzlich ohne die negativen Effekte, die Kommentare sonst über die Zeit unbrauchbar machen (können). Jeder, der meinen Code liest, weiß sofort, was Sache ist. Und das, *obwohl* ich aus zwei Zeilen 10 gemacht habe

Aber wenn Du meinst, das Du es besser weißt: Bitte schön.

PS: Selbst eine Mittelwertbildung kann man refaktorisieren, wenn der Algorithmus zur Mittelwertbildung dem Leser vermutlich nicht bekannt ist (z.B. Schülern):
Delphi-Quellcode:
Function BildeMittelwert(Zahlenreihe : TZahlen) : Double;
Begin
  if Zahlenreihe.Anzahl=0 then
    Raise Exception.Create('Mittelwertbildung nicht möglich');
  else
    Result := SummeAllerZahlen(Zahlenreihe)/ Zahlenreihe.Anzahl;
End;
Auch wenn es in deinen Augen total unübersichtlich ist: Die Lesbarkeit ist erhöht . Ach, und falls mal wer die Summe aller Zahlen einer Zahlenreihe benötigt, hat man ihm gleich geholfen. Auch ein netter Nebeneffekt der unübersichtlichen Programmierung.

Geändert von Furtbichler ( 1. Okt 2013 um 07:08 Uhr)
  Mit Zitat antworten Zitat