Forum: Programmieren allgemein
Delphi
by Stevie,
7. Feb 2014
Ich wär ja schon glücklich, wenn man generische Typen redeklarieren könnte, dann könnte man sich so pseudo Namespace Units bauen, wo man Dinge aus anderen Units zusammenführen kann.
Forum: Programmieren allgemein
Delphi
by Stevie,
7. Feb 2014
Teilweise, ich hab ihn bei jeder Gelegenheit (comments in posts, Review seines Buches und als wir uns auf der EKON17 trafen) darauf aufmerksam gemacht.
Wir beide betrachten DI und "coding against abstractions" nicht als Selbstzweck, sondern als Mittel zu entkoppeltem und damit isoliert testbarem Source.
Und das erreicht man nicht, wenn man die eine offensichtliche Kopplung - nämlich die...
Forum: Programmieren allgemein
Delphi
by Stevie,
7. Feb 2014
@Mavarik
Den Zahn hab ich Nick Hodges schon lange gezogen, der das ne Weile gepredigt hat - aus genau den oben genannten Gründen.
Das Verstecken von Klassen im Implementation Teil, damit sie ja keiner so nutzt, ist Unfug, wenn man sie dann über ein Interface von hintenrum verfügbar macht. Denn das ist der Tod für jegliche Testbarkeit der Klasse und dann fangen einige an, mit Compiler switches...
Forum: Programmieren allgemein
Delphi
by Stevie,
6. Feb 2014
Ja, aber da du im Eingangspost erwähnt hast, dass es für TForm ginge, hab ich das geschrieben. Denn obwohl der Source kompiliert und auch TForm.Create aufgerufen wird (was ja nicht gehen dürfte, denn der ist durch den TComponent Konstruktor nunmal verdeckt), wird das Form ziemlich vor die Wand semmeln, da alles, was so in den Konstruktoren ab TComponent gemacht wird, nicht ausgeführt wird.
Forum: Programmieren allgemein
Delphi
by Stevie,
6. Feb 2014
Leider geht das so nicht. Deshalb gibt es in Spring4d auch relativ komplexe Logik, um den "best matching" Konstruktor zu finden.
Es ist nämlich nicht immer richtig den Parameterlosen Standardkonstruktor aufzurufen, da er eigentlich versteckt wurde (z.B. bei TComponent)
Über deine Logik würde zwar der richtige Speicher allokiert aber niemals die ganzen Dinge aus dem Create(AOwner: TComponent)...