Quando penso allo sviluppo di software agile e a tutti i principi (SRP, OCP, ...), mi chiedo come trattare la registrazione.
La registrazione accanto a un'implementazione è una violazione di SRP?
Direi che yes
l'implementazione dovrebbe essere in grado di funzionare anche senza registrazione. Quindi, come posso implementare la registrazione in modo migliore? Ho controllato alcuni schemi e sono giunto alla conclusione che il modo migliore per non violare i principi in un modo definito dall'utente, ma per usare qualsiasi modello che è noto per violare un principio è quello di utilizzare un motivo decoratore.
Diciamo che abbiamo un sacco di componenti completamente senza violazione di SRP e quindi vogliamo aggiungere la registrazione.
- componente A
- il componente B utilizza A
Vogliamo registrare per A, quindi creiamo un altro componente D decorato con A implementando entrambi un'interfaccia I.
- interfaccia I.
- componente L (componente di registrazione del sistema)
- il componente A implementa I
- il componente D implementa I, decora / usa A, usa L per la registrazione
- il componente B utilizza un I
Vantaggi: - Posso usare A senza registrazione - Test A significa che non ho bisogno di alcuna beffa di registrazione - I test sono più semplici
Svantaggio: - più componenti e più test
So che questa sembra essere un'altra domanda di discussione aperta, ma in realtà voglio sapere se qualcuno utilizza strategie di registrazione migliori rispetto a un decoratore o una violazione di SRP. Che dire del logger singleton statico che è NullLogger predefinito e se si desidera la registrazione syslog, si cambia l'oggetto di implementazione in fase di esecuzione?