Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.726 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Unterschiedliche Darstellung mit und ohne laufendem Delphi

  Alt 26. Jan 2025, 19:57
Was anderes: Sowohl Jaenicke als auch Uwe (iwo bei Stackoverflow...) haben ihre Abneigung gegen das
Code:
With {...} do {...};
geäußert - Warum? Ich finde, das schafft echt Übersicht im Code. Tatsächlich baue ich das sogar nachträglich noch in alte Projekte ein, wenn ich ne passende Stelle sehe
  • Du kannst an der Stelle den Debugger nicht gut verwenden. Der weiß nicht, was wohin gehört und kann daher keine Tooltips mit dem Wert anzeigen. Und du kannst einen Wert auch nicht einfach mit Strg + F7 auswerten, sondern musst immer den Ausdruck aus with dazu kopieren.
  • Bei einem Upgrade auf eine neue Delphiversion oder auf neue Versionen externer Komponenten können sich schwer zu findende Fehler einschleichen.
    Beispiel: TRect hat in XE2 Width und Height bekommen. Wenn irgendwo ein with auf ein TRect verwendet wurde, was z.B. bei den VirtualTrees der Fall war, gab es im besten Fall einen Fehler beim Kompilieren, aber es gab auch Fälle, in denen plötzlich das TRect geändert wurde statt des Formulars oder der Komponente, die eigentlich gemeint war. Das war dann bei komplexeren Projekten auf den ersten Blick gar nicht zu sehen und führte teilweise zu längerer Fehlersuche.
  • Man sieht nicht auf den ersten Blick, welcher Identifier zu dem Element in with gehört und welcher eigenständig ist, was die Lesbarkeit erschwert. Wenn du selbst in einem Jahr auf den Quelltext schaust oder gar jemand anderes, braucht das Verständnis des Quelltextes entsprechend länger.
  • Du kannst Teile des Quelltextes nicht einfach kopieren oder überarbeiten, weil du auf das with Rücksicht nehmen muss, was die Wartbarkeit reduziert.
  • Der LSP und damit die Codevervollständigung funktionieren damit schlechter. Kreuzbeziehungen und with sind da sehr schlecht.
Tatsächlich kenne ich Hooks in Quelltextrepositories, die ein Einchecken verhindern, wenn darin ein with enthalten ist.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat