Aspiring Architect
A questo indirizzo http://code.google.com/p/remoting-nhibernate ho caricato un progetto / prototipo che dimostra come usare NHibernate in ambiente 3-tier (cioè con layer fisici separati) e con lazy-loading abilitato. Il progetto a livello architetturale è un estratto di un progetto reale al quale ho potato tutte le feature che caratterizzano un qualsiasi progetto (logging, gestione errori, ecc.)
In qualsiasi progetto è di fondamentale importanza un sistema che tenga traccia dei vari bug/requirements etc. Nel mio team abbiamo valutato per una decina di giorni Mantis. Devo dire che lo strumento è ben fatto, ti rendi subito conto che è uno strumento utilizzato perché tutte le feature che ha sono veramente utili. La features list è davvero corposa.
All'inizio del progetto sul quale lavoro dall'inizio di quest'anno uno degli obiettivi che mi sono prefissato insieme ad un caro collega è stato quello di cercare di industrializzare il più possibile lo sviluppo del codice. Puo' sembrare una cosa stupida, ma poter decidere in qualsiasi momento di fare refactoring con impatto davvero minimo non è una cosa da sottovalutare in un qualsiasi progetto che si rispetti (leggi non RAD). Alla fine il motto di questo concetto è diventato: - implementiamola, bella o brutta che sia la soluzione, purché sia uguale per tutti.
Con questo inauguro una serie di post cui faranno riferimento ad un progetto reale, denonimanto Canguro, che mi tormenta nel bene e nel male dall'inizio di quest'anno. E' un progetto al quale ci tengo, per la natura del sistema di per sé complessa, per il dominio veramente particolare, ed infine, ma non per questo meno importante, per l'esperienza che collateralmente sta portando non solo per il sottoscritto ma penso per tutto il team (10 persone).
Stimolato dal dipartimento di Test e CQ ho intenzione di adottare ufficialmente delle convenzioni di codifica, del tipo 1000 righe per file, non più di 3 cicli for annidati, metodi con non più di x parametri, ecc. Un altro tassello importante nell'industrializzazione del processo di sviluppo di applicazioni enterprise che ritengo al giorno d'oggi indispensabile ai fini della manutenzione / refactoring.