Questa domanda si basa in realtà su PHP, ma potrebbe essere valida per altri linguaggi interpretati dinamicamente, e in particolare i metodi per generare intuizioni di codice e la ricerca di oggetti negli ambienti di sviluppo.
Usiamo PHPStorm e troviamo l'intellisense inestimabile, ma è fornito da alcune analisi statiche limitate e dall'analisi dei commenti del doc.
Ovviamente questo non si presta bene ad ottenere dipendenze attraverso un contenitore, in quanto l'IDE non ha idea del tipo restituito, quindi lo sviluppatore perde su una pletora di (nel caso del nostro framework comunque) una ricca documentazione fornita attraverso commenti del doc.
Quindi iniziamo a vedere cose del genere:
$widget = $dic->YieldInstance('WidgetA', $arg1, $arg2, $arg3, $arg4...));
/**
* @var $widget WidgetA
*/
In questo modo l'analisi del codice funziona.
In effetti i commenti sono strettamente legati, ma peggio escono fuori sincrono quando il codice viene modificato ma non i commenti:
$widget = $dic->YieldInstance('WidgetB', $arg1, $arg2, $arg3, $arg4...));
/**
* @var $widget WidgetA
*/
Ovviamente il commento potrebbe essere migliorato facendo riferimento a un'interfaccia Widget, ma allora potremmo anche usare una fabbrica ed evitare il requisito per i suggerimenti addizionali di tipizzazione nei commenti e la complessità dei dic / la placcatura della caldaia.
Quale è più importante per lo sviluppatore medio, l'intuizione del codice / intellisense o il 'nirvana' decouplement?