Was sind die Vor- und Nachteile der Verwendung von fließende Übergänge in Delphi?
Fließende Schnittstellen sollen die Lesbarkeit erhöhen, aber ich bin ein wenig skeptisch, dass man un lange LOC, die eine Vielzahl von verketteten Methoden enthält.
Gibt es Probleme mit dem Compiler?
Gibt es irgendwelche Probleme bei der Fehlersuche?
Gibt es Probleme bei der Laufzeit/Fehlerbehandlung?
Fließende Schnittstellen werden z. B. verwendet in TStringBuilder , THTMLWriter y TGpFluentXMLBuilder .
Aktualisiert:
David Heffernan fragte, welche Themen mir am Herzen lägen. Ich habe darüber nachgedacht, und das Hauptproblem ist der Unterschied zwischen "explizit angeben, wie es gemacht wird" und "den Compiler entscheiden lassen, wie es gemacht wird".
AFAICS, gibt es keine Dokumentation darüber, wie verkettete Methoden tatsächlich vom Compiler behandelt werden, noch irgendeine Spezifikation darüber, wie der Compiler verkettete Methoden behandeln sollte.
Sur dieser Artikel können wir nachlesen, wie der Compiler zwei zusätzliche var-Parameter zu Methoden hinzufügt, die als Funktionen deklariert sind, und dass die Standardaufrufkonvention drei Parameter in das Register und die nächsten auf den Stack legt. Eine "fließende Funktionsmethode" mit 2 Parametern verwendet daher den Stack, während eine "normale Prozedurmethode" mit 2 Parametern nur das Register verwendet.
Wir wissen auch, dass der Compiler das Binärprogramm optimiert (z. B. String als Funktionsergebnis , Bewertungsauftrag , Bezug auf lokale Proc ), aber manchmal mit überraschenden Nebeneffekten für den Programmierer.
Die Tatsache, dass die Speicher/Stack/Register-Verwaltung komplexer ist und die Tatsache, dass der Compiler mit unbeabsichtigten Nebeneffekten zaubern kann, stinkt mir also gewaltig. Daher die Frage.
Nachdem ich die (sehr guten) Antworten gelesen habe, ist meine Besorgnis stark zurückgegangen, aber meine Präferenz ist immer noch die gleiche :)