moin,
TraitHelper und AbstractInstance sind zu eng gekoppelt.
Ja ich habs befürchtet 😕.
Entweder gehört _doSomething nach AbstractInstance, oder $_storage gehört in den TraitHelper.
_doSomething
ist im TraitHelper
enthalten und wird von AbstractInstance
imlementiert. Insofern keine einwände finde ich 😀.
Methode und Property gehören jedenfalls zusammen, nicht auseinander. Es zu trennen ist ein Unfall, der darauf wartet, zu passieren.
Ja wie gesagt ich hab es gelöst aber unglücklich 😕
Traits sollten meiner Meinung nach auch niemals direkt auf Properties des Objekts zugreifen, in dem sie geUSEt werden, und sie sollten alle Methoden USEenden Objekts, die sie verwenden, per abstract-Deklaration anmelden, so dass es nicht möglich ist, einen Trait dort zu verwenden wo er nicht funktionieren kann.
ach ja jetzt wo du es sagst…
trait TraitHelper {
abstract private function _addStorage( InterfaceAbstract $params ) void;
/* CODE */
}
besser? Ich fühle mich auf jedenfall wohlerer 😀.
Also - gibt es mehrere Klassenhierarchien (oder Klassen), die keine gemeinsame Wurzel haben, und die diesen Trait benötigen? Dann hat er Existenzberechtigung.
Nein gibt es nicht. Werde Ich anders lösen so wie du es empfohlen hast
Vor Overengineering habe ich dich schon mehrfach gewarnt.
Ja ich weis. Und ich halte mich an deinen Rat. Aber fals nicht, klage ich wieder mein Leid hier im Forum 😉.
[…] Baue heute, was Du heute brauchst. Und wenn Du mehr brauchst, refaktoriere und erweitere.
Jo danke. Werde ich beherzigen.
Baue für das, was Du heute baust, Unittests. Damit kannst Du sicherstellen, dass dein Code nach dem refaktorieren immer noch funktioniert.
Danke. Werde ich machen. Zu den UnitTests habe ich noch zukünftig Fragen.
P.S.: Sry wegen der vielen Auszeichnungen von mir. Ich kann es besser lesen eben weil es abhehoben und ausgezeichnet ist. So passieren mir weniger fehler.
lgmb
Sprachstörung