Ja, ich versuche auch immer ALLES, was möglich ist, im Interface anzugeben.
Da ist dann auch die Reihenfolge sichergestellt.
Es gibt aber auch Kollegen, die sind vehement der Meinung, dass man ALLES was möglich ist, in die Implementation machen MUß!
Im Interface wird ALLES so wie es da steht, in der Reihenfolge vor der eigenen
Unit geladen/initialisiert.
Wenn etwas in den eingebundenen Units geladen wird, dann das natürlich entsprechend auch wieder zuerst.
In Implementation kann unterliegt die Reihenfolge im USES dem Gutdünken des Compilers und es kann sogar passieren, dass Units erst nach dem eigenen Initialization, bzw. nach eigenen Class-Constructor's vorhanden ist.
Greift man also im Initialization/ClassConstructor auf eine Variable/Funktion zu, kann es sein, das diese noch garnicht initialisiert ist, wenn die
Unit im Implementation steht ... wenn in Interface, dann ist es immer schon da.
Genau andersrum beim Finalizaition, da kann es, wenn im Uses der Implementation, dann schon weg sein, bevor das eigenen Finalization/ClassConstructor anläuft.