AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Softwareentwicklung im Allgemeinen Softwaretests und Qualitätssicherung Methode zu lang - Toxizitäts Metriken - FixInsight

Methode zu lang - Toxizitäts Metriken - FixInsight

Ein Thema von creehawk · begonnen am 5. Sep 2018 · letzter Beitrag vom 10. Sep 2018
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.592 Beiträge
 
Delphi 10.4 Sydney
 
#11

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

  Alt 5. Sep 2018, 23:06
Delphi-Quellcode:
if MatchStr(s_Art, ['Rechnung', 'Endrechnung', 'Gutschrift']) then
   MethodeFürRechnungen(...);

if s_Art = 'Angebotthen
   MethodeFürAngebote(...);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.656 Beiträge
 
Delphi 10.4 Sydney
 
#12

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

  Alt 5. Sep 2018, 23:45
Delphi-Quellcode:
if MatchStr(s_Art, ['Rechnung', 'Endrechnung', 'Gutschrift']) then
   MethodeFürRechnungen(...);

if s_Art = 'Angebotthen
   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)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.549 Beiträge
 
Delphi 10.4 Sydney
 
#13

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

  Alt 6. Sep 2018, 06:00
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
Sven
--
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

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

  Alt 6. Sep 2018, 09:15
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 . 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 ) Code.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#15

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

  Alt 6. Sep 2018, 10:02
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 ...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.658 Beiträge
 
Delphi 7 Personal
 
#16

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

  Alt 6. Sep 2018, 10:56
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 ) 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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
929 Beiträge
 
Delphi 2007 Professional
 
#17

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

  Alt 6. Sep 2018, 13:35
Zum Glück ersetzen wir diesen Müll sukzessive durch wartbaren und besser dokumentierten (weil meinen ) 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.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.834 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#18

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

  Alt 6. Sep 2018, 14:58
Zum Glück ersetzen wir diesen Müll sukzessive durch wartbaren und besser dokumentierten (weil meinen ) 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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.095 Beiträge
 
Delphi 10.4 Sydney
 
#19

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

  Alt 6. Sep 2018, 16:45
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.592 Beiträge
 
Delphi 10.4 Sydney
 
#20

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

  Alt 6. Sep 2018, 19:22
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 01:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf