AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Clean Code Frage

Ein Thema von MyRealName · begonnen am 27. Jul 2020 · letzter Beitrag vom 28. Jul 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
679 Beiträge
 
Delphi 10.4 Sydney
 
#1

Clean Code Frage

  Alt 27. Jul 2020, 11:35
Also, wir versuchen in der Firma Clean Code zu nutzen und habe dazu eine Frage, die ich so noch nicht beantwortet gefunden habe :

Nehmen wir an, ich habe ein Event eines TDataSet OnSetText. Darin stelle ich eine Überprüfung an, ob der eingegebene Wert zulässig ist und entweder nehme ich ihn dann an oder weise ihn ab. Das ganze ist 30 Zeilen von "procedure" bis zum "end". Nun sagt mein Code-Reviewer, dass dies in eine eigene Funktion muss, zum Bsp (vereinfacht) "IsValidValue". Aber das SetText selbst ist ja eh schon ein Validator-Event und der Aufruf einer funktion in diesem Event, was eh nur eine Sache macht, bringt mir keinen Mehrwert an Leserlichkeit.
Ich kann es natürlich ändern wie es der Reviewer möchte, aber es geht ja um das Grundsätzliche...

Gedanken dazu ?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: Clean Code Frage

  Alt 27. Jul 2020, 11:47
Hallöle...
Zitat:
Nun sagt mein Code-Reviewer, dass dies in eine eigene Funktion muss, zum Bsp (vereinfacht) "IsValidValue".
...so einen habe ich Gott sei Dank nicht.
Persönlich habe ich auch Prozeduren die thematisch nicht trennbar sind...weil sie nur für diese Funktion relevant sind. Damit das nicht Spagetticode wird, lagere ich den Code in lokale Prozeduren aus. Übersichtlicher und trotzdem an einem "Platz".

Kann er damit leben?

PS: In allen z.B. GUI Events darf es nur den Aufruf der procdure geben. Innerhalb dieser "verzweigen"

Geändert von haentschman (27. Jul 2020 um 12:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: Clean Code Frage

  Alt 27. Jul 2020, 11:49
Gedanken dazu ?
Bitte schön: When, What, Why!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Clean Code Frage

  Alt 27. Jul 2020, 11:50
Zitat:
...bringt mir keinen Mehrwert an Leserlichkeit.
Aber vielleicht in Sachen Testbarkeit, wenn das als eigene Methode implementiert ist?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#5

AW: Clean Code Frage

  Alt 27. Jul 2020, 12:02
Allein wegen der Testbarkeit gehört es da nicht hin.

Wenn Du diese Überprüfung doch mal an anderer Stelle benötigst, dann ist die jetzt schon gut versteckt.

Ein Überprüfung der Werte gehört in die Klasse (besser in den Service), welcher alle Aspekte dieses Datum bzw. der Datengruppe überprüft und kennt. Diese Klasse kann dann getestet werden und recht einfach (Dependency Injection) durch eine neue Klasse ausgetauscht werden, wenn nötig.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
679 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Clean Code Frage

  Alt 27. Jul 2020, 12:21
Testbarkeit ist ein gutes und verständliches Argument, auch wenn wir bisher keine Unittests machen und unser grosser Chef das bisher auch noch nicht bewilligt hat.
Vielen Dank für die Ideen.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#7

AW: Clean Code Frage

  Alt 27. Jul 2020, 13:30
unser grosser Chef das bisher auch noch nicht bewilligt hat...


Was muss da bewilligt werden? Und was spricht für ihn dagegen?

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Clean Code Frage

  Alt 27. Jul 2020, 13:36
Aber wenn eh alles in der einen Unit steckt, dann macht es vom Test her doch garkeinen Unterschied, ob er die EventMethode oder die private Methode in der selben Klasse aufruft?
$2B or not $2B
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Clean Code Frage

  Alt 27. Jul 2020, 14:06
unser grosser Chef das bisher auch noch nicht bewilligt hat...


Was muss da bewilligt werden? Und was spricht für ihn dagegen?

......
Du solltest dich mal, nach einem Unit-Test Vortrag / Workshop auf der EKON, natürlich verkleidet, unter die Besucher mischen, das erweitert ungemein Mein Highlight war mal nach einem Ua oder Nick Hodges Vortrag, quasi beim verlassen des Raumes: das ist doch alles akademisch, das kann man doch in einem "richtigen" Projekt gar nicht nutzen... Und sein Kollege meinte in seinen Bart murmelnd: genau. die haben keine Ahnung...
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: Clean Code Frage

  Alt 27. Jul 2020, 14:23
Aber das SetText selbst ist ja eh schon ein Validator-Event und der Aufruf einer funktion in diesem Event, was eh nur eine Sache macht
OnSetText ist mitnichten ein Validator-Event. Das Validator-Event für TField lautet OnValidate. OnSetText ist das Pedant zu OnGetText. Der ursprüngliche Sinn der beiden war, ein anderes Format anzeigen bzw. bearbeiten zu können, als in der DB gespeichert ist.

Aber man kann da auch valedieren (ich glaube OnValidate kam später).

Ciao HeZa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 +1. Es ist jetzt 22:47 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