Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Softwaretests und Qualitätssicherung (https://www.delphipraxis.net/86-softwaretests-und-qualitaetssicherung/)
-   -   Methode zu lang - Toxizitäts Metriken - FixInsight (https://www.delphipraxis.net/197793-methode-zu-lang-toxizitaets-metriken-fixinsight.html)

himitsu 5. Sep 2018 22:06

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Delphi-Quellcode:
if MatchStr(s_Art, ['Rechnung', 'Endrechnung', 'Gutschrift']) then
   MethodeFürRechnungen(...);

if s_Art = 'Angebot' then
   MethodeFürAngebote(...);

Uwe Raabe 5. Sep 2018 22:45

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Zitat:

Zitat von himitsu (Beitrag 1412533)
Delphi-Quellcode:
if MatchStr(s_Art, ['Rechnung', 'Endrechnung', 'Gutschrift']) then
   MethodeFürRechnungen(...);

if s_Art = 'Angebot' then
   MethodeFürAngebote(...);

oder
Delphi-Quellcode:
if IsRechnungsArt(s_Art) then
   MethodeFürRechnungen(...);

if IsAngebotsArt(s_Art) then
   MethodeFürAngebote(...);
oder, wenn es sich gegenseitig ausschließt
Delphi-Quellcode:
if IsRechnungsArt(s_Art) then
   MethodeFürRechnungen(...)
else if IsAngebotsArt(s_Art) then
   MethodeFürAngebote(...);
oder
Delphi-Quellcode:
case GetArt(s_Art) of
  artRechnung: MethodeFürRechnungen(...);
  artAngebot: MethodeFürAngebote(...);
  ...
else
  raise EInvalidArtExcetion.Create('unbekannte Art: ' + s_Art);
end;
Auch der weiteste Weg beginnt mit einem ersten Schritt. (Konfuzius)

sh17 6. Sep 2018 05:00

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Zitat:

Zitat von OlafSt (Beitrag 1412527)
Habe ich schon versucht. Von den MMX-Tools habe ich erst kürzlich was mitbekommen und bin begeistert. Aber gegen sowas hier:

[Delphi]
if (s_Art='Rechnung') or (s_Art='Endrechnung') or (s_Art='Gutschrift') then
begin
//900 Zeilen Code
if (s_Art = 'irgendwas') then
...
end;
Da ist nix mit Refactoring und/oder Auslagern in extra Methoden. Das Ding ist ein Meisterwerk des unentwirrbaren Spaghetti-Codes.

Ablaufsteuerung durch casesensitive Strings - krass - nicht mal Konstanten verwendet, ich hoffe es gibt wenigstens ein Handbuch zur Funktion

OlafSt 6. Sep 2018 08:15

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Nope. Das ganze ist auch absolut hervorragend dokumentiert und kommentiert. Kommentare sind drin, jede Menge: Auskommentierter Code, weil geändert und Fehlerbehebungen mit Kürzel wer und wann.

Kommentare mit erklärender Funktion gibt es - wenn man meine hinzugefügten abzieht - genau gar keinen.

Wäre die Routine so aufgebaut, wie die Vorschreiber es sich vorstellen, hätte ich mich da auch mal dran gewagt. Ihr geht davon aus, das das ganze logisch nach Funktion gegliedert ist. Das würde das Refactoring tatsächlich vereinfachen. Aber so ist das Ding nicht gebaut.

Das Teil ist so strukturiert, wie ein Drucker arbeitet :shock:. Am Anfang des Blattes gibt es [Code]. Die Zeile darunter ist aber für Kunden "BCD" anders, also [Code mit Ausnahme]. Dann muß da ja n Firmenlogo kommen, also [Je nach s_Art [je nach Kunde [Code]]. Hab ich schon das Seitenende erreicht ? Ach ja, englische Texte brauchen wir ja auch noch... Und so weiter. Zusätzlich wird etwa ein dutzend SQL-Queries geöffnet, je nach s_Art und Kunde mit anderen Statements versehen; da werden Formulare geöffnet (weil die nicht wußten, wie man sonst Klassen erzeugt) und in versteckte Edit-Felder Werte eingetragen (keine Ahnung von Properties gehabt) und dann im OnChange-Handler jeweils s_Art- und Kunde-Abhängige Dinge gemacht. Wirklich benutzt wird das dann 5k Zeilen weiter unten...

Wie schon gesagt, Spaghetti-Code vom allerfeinsten. Das auseinander zu sortieren hat schon mal einer versucht und es nach 3 Monaten aufgegeben, weil die zahllosen Seiteneffekte einfach nicht mehr beherrschbar waren.

Letztlich geht es aber nicht um dieses "Meisterwerk der Software-Entwicklung". Man kann tatsächlich Code produzieren, mit dem man nur noch eines machen kann: Löschen, weil selbst so coole Tools wie MMX einfach nicht mehr gegenan kommen. Zum Glück ersetzen wir diesen Müll sukzessive durch wartbaren und besser dokumentierten (weil meinen :-D) Code.

Schokohase 6. Sep 2018 09:02

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Zitat:

Zitat von OlafSt (Beitrag 1412550)
Kommentare mit erklärender Funktion gibt es - wenn man meine hinzugefügten abzieht - genau gar keinen.

Das ist das eigentliche Problem, warum so ein Moloch auch nicht mal eben so komplett neu geschrieben werden kann.

Niemand weiß ganz genau was da so passiert/passieren muss.

Das kann man nur in das Nachtgebet einschließen und hoffen ...

p80286 6. Sep 2018 09:56

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Zitat:

Zitat von OlafSt (Beitrag 1412550)
Letztlich geht es aber nicht um dieses "Meisterwerk der Software-Entwicklung". Man kann tatsächlich Code produzieren, mit dem man nur noch eines machen kann: Löschen, weil selbst so coole Tools wie MMX einfach nicht mehr gegenan kommen. Zum Glück ersetzen wir diesen Müll sukzessive durch wartbaren und besser dokumentierten (weil meinen :-D) Code.

MMMM.
Da ich weiß, wie es zu solchen Monstern kommen kann (mach doch mal eben schnell), würde ich nicht so hart urteilen. Was Du da vor Dir hast, ist das Ergebnis jahrelangen Bastelns ohne ein eigentliches Konzept. Um mit Klassen zu arbeiten muß, man erst einmal entsprechende Denkstrukturen entwickeln. Und wer nicht "strukturiert" denken kann ist da wohl erst einmal vollkommen überfordert.

Gruß
K-H

dummzeuch 6. Sep 2018 12:35

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Zitat:

Zitat von OlafSt (Beitrag 1412550)
Zum Glück ersetzen wir diesen Müll sukzessive durch wartbaren und besser dokumentierten (weil meinen :-D) Code.

LOL, der war gut!

Ich schätze mal, in diese Situation kommt jeder, der den Code anderer warten muss. Selbst ein genialer Softwareentwickler hat mal einen schlechten Tag (der wird unter Zeitdruck gesetzt) und produziert dann Müll, den er nach ein paar Monaten selbst nicht mehr versteht.

Mir zumindest passiert das, aber ich bin ja auch nicht genial.

Stevie 6. Sep 2018 13:58

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Zitat:

Zitat von dummzeuch (Beitrag 1412585)
Zitat:

Zitat von OlafSt (Beitrag 1412550)
Zum Glück ersetzen wir diesen Müll sukzessive durch wartbaren und besser dokumentierten (weil meinen :-D) Code.

LOL, der war gut!

Ich schätze mal, in diese Situation kommt jeder, der den Code anderer warten muss. Selbst ein genialer Softwareentwickler hat mal einen schlechten Tag (der wird unter Zeitdruck gesetzt) und produziert dann Müll, den er nach ein paar Monaten selbst nicht mehr versteht.

Mir zumindest passiert das, aber ich bin ja auch nicht genial.

Ich hab mal irgendwo ein Zitat gelesen, was ungefähr so lautete: "Wenn man seinen Sourcecode von <irgendwann in der Vergangenheit> heute nicht für verbesserungswürdig hält, dann hat man sich nicht weiterentwickelt/verbessert". Also auf alle, die ihren Sourcecode von vor drei Monaten heute sch*** finden. :cheers:

jaenicke 6. Sep 2018 15:45

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Das Gefühl kenne ich nur zu gut...
"Ach du Sch***, was hast du denn damals da gemacht..."

Leider hilft das Wissen darüber nichts dagegen, dass es ein Riesenaufwand ist das ganze heute dann in besseren Code zu verwandeln. :|

himitsu 6. Sep 2018 18:22

AW: Methode zu lang - Toxizitäts Metriken - FixInsight
 
Zitat:

Zitat von jaenicke (Beitrag 1412603)
Das Gefühl kenne ich nur zu gut...
"Ach du Sch***, was hast du denn damals da gemacht..."

Leider hilft das Wissen darüber nichts dagegen, dass es ein Riesenaufwand ist das ganze heute dann in besseren Code zu verwandeln. :|

Aber besser heute anfangen da aufzuräumen, denn im Allgemeinen wird sowas mit der Zeit nur noch viel schlimmer.

Es muß auch nicht auf biegen und brechen sofort perfekt werden.
> Die eine übergroße schlimme Funktion in ein paar kleinere weniger Schlimme, das ist auch schon ein Fortschritt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.
Seite 2 von 3     12 3      

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