Statistica deterministica vs classi iniettabili

6

Ho in mente diverse funzioni deterministiche che vorrei mettere insieme, ma sono alle prese con le piene implacazioni del fare:

  1. Classe statica con metodi statici
  2. Istanza di una classe che può essere iniettata nei consumatori

In entrambi i casi, l'implementazione sarebbe la stessa, e dato che sono deterministici senza dipendenze, posso testare entrambi senza problemi.

La mia preoccupazione principale è quando si tratta di testare i consumatori sia delle funzioni statiche che di quelle iniettate. Sento che dovrei andare con la via iniettabile, posso testare molto più facilmente i consumatori, ma significa un'altra cosa da iniettare in tutti i consumatori. Seguendo la strada statica, posso semplicemente consumarli direttamente da qualsiasi classe, ma sarà più impegnato a testare scenari specifici, in quanto i consumatori utilizzeranno le implementazioni letterali.

Qualche idea / consiglio? Altre informazioni necessarie?

    
posta Kritner 10.11.2016 - 17:28
fonte

2 risposte

4

Invece di hard code, usa i valori predefiniti.

Rendere ogni dipendenza iniettabile può portare a un disastro. Anche le classi piccole diventano presto grandi costruttori. L'uscita dal caos è un valore predefinito ragionevole. Il principio è chiamato convenzione sulla configurazione ma in realtà si tratta solo di valori predefiniti di override.

Se sei bloccato in una lingua che non consente argomenti denominati (guardando a te Java) finisci per doverli simulare usando qualcosa come Josh Bloch Builder Pattern .

Una volta che hai nominato gli argomenti è facile usare gli argomenti opzionali perché puoi scegliere uno dei molti argomenti da configurare e non tutti. Se riesci a farlo, è molto più facile mantenere l'abitudine di scrivere codice verificabile perché usarlo non è un tale dolore.

    
risposta data 11.11.2016 - 01:36
fonte
2

In seguito, quando la tua classe statica deve avere dipendenze per supportare una nuova funzione, convertirla da single statica a single singles potrebbe essere un incubo.

Recentemente ho dovuto affrontare questa situazione in cui esistevano molte classi statiche esistenti che si chiamavano a vicenda e una di esse doveva essere modificata per avere una dipendenza iniettata. Ciò significava che tutte le classi statiche che lo chiamavano dovevano essere cambiate, e la tana del coniglio diventava sempre più profonda.

Personalmente ho evitato le classi statiche ovunque fosse possibile per molti anni, ed ero molto frustrato quando la risoluzione di questo problema richiedeva più di due settimane di preziosa risorsa di sviluppo.

Ti incoraggio vivamente a intraprendere il percorso di iniezione e salvare qualcuno in futuro dall'incubo che ho appena vissuto.

    
risposta data 11.11.2016 - 06:07
fonte

Leggi altre domande sui tag