aprile 2010 Blog Posts
Ringrazio per le proposte di alternative di design che mi sono state segnalate nei commenti del mio precedente post.
Le riporto qui come futura memoria per valutare alternative di design. Per prima cosa è corretta l'osservazione di Riccardo, il play va chiamato dal consumer e non all'interno della classe Sounds. Questo perchè se oltre a Play avessi la necessità di chiamare un altro metodo dovrei duplicare l'if in giro per il codice.
public class Sounds
{
private readonly Dictionary<Keys, Sound> m_sounds;
private readonly Sound m_defaultSound;
public Sounds(Sound defaultSound,...
Prendo spunto dal post di Luka su come ridurre la complessità del codice eliminando i conditional statement come if, swicth ecc. per fare qualche considerazione.
Premetto che ho aderito alla campagna anti-if e che sono pienamente d'accordo ad avere un codice con una complessità ciclomatica molto bassa.
Ci sono if che secondo me non è conveniente eliminare.
Partiamo da un esempio:
Ho un software che simula una tastiera elettronica con la tastiera del PC e ad ogni tasto premuto corrisponde un suono. Nel caso in cui...
Ho visto un certo interesse sul post sull'architettura malleabile proverò a fare qualche esempio su cosa ha funzionato nei progetti su cui ho lavorato o sto lavorando.
L'approccio con cui mi trovo meglio è quello di usare gli oggeti per creare un DSL interno che descriva il comportamento del sistema; questo rende la manutenzione molto più efficace perchè tendenzialmente viene modificata la descrizione del sistema e a nuove feature corrispondono di solito nuovi oggetti.
Proviamo a fare un esempio pratico. Devo realizzare il classico data entry. La prima cosa che viene in mente è quella...
Supponiamo di avere il solito gestionale enterprise con cui più o meno tutti gli sviluppatori hanno avuto a che fare.
Proviamo a stimare le seguenti richieste di un ipotetico cliente:
Tutto il testo deve essere maiuscolo
Attivare la modalità offline per gli utenti che lavorano da casa
Per i PC con almeno Windows Vista utilizzare le WPF al posto delle WindowsForms
Tutti gli arrotondamenti devono essere a 4 cifre anzichè due
Avere un Log di tutte le modifiche ai...