[pugMI] Factory coese e testabili

Marco Vito Moscaritolo mavimo a gmail.com
Ven 12 Apr 2013 08:46:31 PDT


2013/4/12 Jacopo Romei <jromei a gmail.com>:
> Ciao a tutti!

Ciao :)

> 1. Una factory si occupa di prepararmi un oggetto a seconda delle condizioni
> di contesto.
> 2. Un factory quindi se ne assume la responsabilità e in base al principio
> "tell don't ask" non deve mostrare troppe sue pudenda, quindi non deve, in
> virtù del principio suddetto, ricevere le dipendenze necessarie ai suoi
> prodotti finiti.
> 3. Un sano principio di testabilità, però, ci porta a voler garantire la
> 'sostituibilità' degli stessi componenti necessari alla costruzione dei
> prodotti della factory.
> 4. La factory, inoltre, è uno di quei pattern che servono a incapsulare una
> zona di contatto del nostro sistema con il mondo 'sporco e infetto là fuori'
> e - per esempio - necessariamente dovrà aggregare, montare, istanziare
> esplicitamente, dipendere in modo 'hardcoded' da altre classi.

Ok su tutto.

> La domanda è, tutto considerato: posso sacrificare parte della testabilità
> della factory come *unità* disaccoppiata dal resto in favore di un test più
> d''integrazione' che però mi permetta di sviluppare factory più coese?

Premesso che senza un esempio pratico potremmo "dire la stessa cosa",
tutto dipende da quanto è complesso l'oggetto che la factory deve
andare ad istanziare e quanto è astraibile il concetto. Una facotry
può limitarsi a montare i pezzi, ignorando bellamente quali sono
questi pezzi, pureché questi implementino determinate interfaccie che
ne garantiscono la sostituibilità e che possono essere sostituite in
fase di test con classi meno "impegnative".
Ovviamente questo comporta ad aumentare in maniera esponenziale la
complessità strutturale del sistema; tanto più la tua factory ha
bisogno di ricevere input per generare oggetti, tanto più avrai
bisogno di astrarre, tanto più il sistema diventerà complesso. c'è
anche da considerare che una factory tipicamente si occupa di fare "il
lavoro sporco" permettendo di tenere "pulito" l'artefatto prodotto,
che è "la parte pregiata" del nostro coddice.
Come in QUASI tutte le cose c'è da "accettare" dei compromessi,
limitare l'astrazione a quei contesti in cui è sensata e per cui la
testabilità dell'unità non è "compromessa".

> www.domandecriptiche.it/dubbioso78

www.risposteovvie.com/contorto_83

Ciau
       Marco
--
web:     http://mavimo.org
msn:     mavimo a tiscali.it
gtalk:   mavimo a gmail.com
mob:     +39 393 9249923
skype:   marco.moscaritolo
twitter: http://twitter.com/mavimo



Maggiori informazioni sulla lista Milano