Quando si sviluppa con il framework PHP di Symfony2 spesso vedo raccomandazioni per disaccoppiare il codice, ma il più delle volte è accompagnato da un 'se si desidera rilasciare come pacchetto di terze parti'.
Il che solleva le domande, se il mio software è proprietario, dovrei anche preoccuparmi di disaccoppiarlo, ad esempio, usando interfacce e modelli (classi astratte) per definire gli oggetti del dominio. È possibile utilizzare un ORM e creare entità che si estendono dai modelli e se si desidera passare a un ODM è possibile creare un documento che si estende dal modello. Questo è solo un esempio, ci sono più come avere un UserManager che implementa un UserManagerInterface (perché averne bisogno in un software proprietario che non sarà mai rilasciato al pubblico).
Disaccoppiarmi sembra più un modo per soddisfare tutte le esigenze quando rilasci il tuo codice come open source, che può adattarsi alla maggior parte delle esigenze.