2009-11-04 11 views
6

Sono un grande fan del classico libro Design Patterns. Ho lavorato molto diligentemente per apprendere la maggior parte dei modelli e il modo in cui sono utilizzati (e quando dovrebbero essere evitati). Tuttavia, incontro spesso gruppi in cui sono l'unico a reclamare il libro su base regolare. Speravo che imparare questo libro avrebbe reso più facile spiegare i concetti ad altri sviluppatori, ma la maggior parte deve ancora investire il tempo per apprendere tali argomenti.Come insegnare modelli di progettazione a una squadra

Questi sono i principali sistemi che richiedono un'architettura solida. Non voglio dire costantemente "leggi il libro". Come incoraggio l'uso regolare dei modelli di progettazione senza imbattersi in pomposi? Qualcuno ha avuto successo nell'avere un intero team ad apprendere e utilizzare modelli di progettazione?

+0

non esiste un ciclo di feedback migliore di quello che coinvolge $ - + o -. – jldupont

+1

attenti alla sindrome dell '"uomo con un martello"; non vi è alcun motivo per "un uso regolare dei modelli di progettazione" quando tali schemi non sono necessari. Doug T lo inchioda. –

+0

Sembra un po 'soggettivo, direi "wiki della comunità"? –

risposta

14

Suggerirei di non analizzare i modelli di progettazione, ma di sostenere specifici progetti/approcci per problemi specifici man mano che si incontrano.

Successivamente, quando si verifica una situazione simile, è possibile riprendere l'approccio che si è preso per il problema precedente. Quindi puoi chiamarlo "schema" che il team ha visto usato per risolvere problemi reali con reali benefici.

Inoltre, non aderirei strettamente agli schemi di progettazione del libro per il loro stesso interesse. Potrebbe accartocciarti da buoni suggerimenti provenienti da modelli non di progettazione o ti accechi a problemi reali che potrebbero essere specifici per il tuo ambiente/dominio problematico.

+4

Questo consiglio funziona.Ero qualcuno che era un po 'ostile a progettare modelli, ma dopo un po' di tempo con un collega che ha mostrato dove potevano essere usati saggiamente in situazioni, ho capito i vantaggi di dare queste etichette tecniche. Non evangelizzarlo in gola, lascia che la situazione appaia organicamente. –

1

Non costringerli a leggere il libro, questo non funzionerà.

Basta refactoring il loro codice utilizzando un modello di progettazione e mostrare loro perché questo è più facile.

Dare anche loro un po 'di tempo per imparare il nuovo modo di lavorare.

4

Revisione del codice.

Costringendoli a utilizzare modelli di progettazione probabilmente causerà un uso eccessivo e anti-schemi.

+0

Dover spiegare un determinato schema di progettazione durante una revisione del codice è in realtà il problema. Non c'è intenzione di "forzare" schemi di progettazione in cui non appartengono. Ma a volte sono utili. La domanda riguarda come incoraggiare l'auto-educazione in modo che tutti i membri del team possano parlare lo stesso linguaggio di "design pattern" quando è utile. Non sono abbastanza sicuro di come le recensioni del codice possano realizzarlo. – User1

2

Confesso che non ho mai provato a farlo, quindi sto facendo riferimento a osservazioni generali su come le squadre possono migliorare le loro abilità e la qualità di ciò che producono. Come imparano le persone? Leggere, sperimentare, imitare, mentoring ... persino ascoltare le lezioni! Penso che dovrai applicare diversi approcci diversi. Direi che due cose sono fondamentali: esposizione a idee e feedback.

Quindi, per una squadra che vorrei fare le seguenti operazioni:

1). Revisioni del design e del codice. Le recensioni non devono essere condotte solo da persone seniour. Chiedi anche ai junior di leggere il codice e commentare. Idealmente imparano anche loro.

2). I wokrshops del design creano problemi e offrono soluzioni alternative.

In entrambi i casi sono meno interessato a Design Patterns (il libro) che a inculcare uno spirito di valutazione e considerazione per il design. Cosa c'è di buono? Cosa c'è di male? Quali forze e compromessi portano a questa particolare soluzione. Quando è abbastanza buono?

2
  1. Take a problema ben noto a loro.

  2. Identificare il modello che può risolvere il problema in modo più efficace. E risolvere il problema con il modello e anche implementare la soluzione e mostrare loro il lavoro.

  3. Non dirgli ancora del motivo di progettazione. Ripeti il ​​ per circa 3-4 problemi. In seguito, dì loro che quello che hai fatto è stato risolvere un problema con il modello di progettazione - Assegna un nome a ciascun modello e fornisci loro libri di riferimento o indicatori URL per il loro ulteriore studio e ricerca.

0

Leggendo il libro dà solo tu 'conoscere' in Design Patterns e credo che quella luce scatta solo dopo aver implementato alcuni modelli. Potrebbe essere consigliabile nella tua situazione impostare una revisione tra pari e osservare il codice finito per vedere dove un modello può aver alleviato un particolare problema.

Dato che non hai menzionato una fonte, presumo che tu stia parlando del libro GOF e, in tal caso, suppongo anche che tu stia lavorando in un linguaggio tipizzato staticamente come C++, Java, C#, ecc. In caso contrario, molti dei modelli potrebbero non essere applicabili al dominio del problema e probabilmente metteranno da parte i tuoi sforzi per l'adattamento del team. Ad esempio, Visitatore (doppia spedizione) non viene utilizzato nelle lingue con rilegatura dinamica, Scala ha cucinato Singleton, ecc.

1

Prendi un paio di copie di "Modelli di primo disegno" e chiedi alla gente di leggerlo. È un modo divertente per conoscere i modelli.

Insegno un corso di Design Patterns per il programma Johns Hopkins Engineering for Professionals (programma serale Masters degree), e regolarmente pranzi al sacco marrone al lavoro per parlare di schemi.

Suggerirei di tenere un'ora o due al mese per un pranzo al sacco marrone. Parla del concetto del modello e mostra alcuni esempi di programmazione.

Ogni conferenza parlo del Golden Hammer: impara come utilizzare ogni modello e BLOCCA nella tua cassetta degli attrezzi finché non ne hai bisogno!

La mia tecnica preferita è quella che io chiamo "Pattern Theater". Ciascuno dei miei studenti ricerca uno schema e scrive uno script di 2-3 pagine che utilizza lo schema nel mondo reale. Per esempio, presento un teatro sulla cavalcata di Paul Revere per descrivere Observer. (Robert Newman vede le lampade inglesi e le luci, Paul Revere vede le lampade e inizia a cavalcare e urlare, alcuni cittadini lo sentono e si nascondono, alcuni cittadini lo sentono e afferrano i loro fucili - coppie discrete di stimolo/risposta) Niente nei cinema menziona la programmazione; si tratta di ridurre i concetti prima di iniziare la parte di programmazione della lezione.

0

La predicazione non funziona. Dare l'esempio.

Quando si lavora su un disegno, afferrare il/i libro/i modello/i di progettazione e aprirlo. Anche se hai memorizzato tutti i motivi, apri il libro.

Quando qualcuno ti fa una domanda sul design, non limitarti a dire il nome di un modello, prendi il libro, aprilo allo schema, indica la parte rilevante del modello e pronuncia qualcosa come "oh, sento che è, non sono sicuro, ma penso che questo potrebbe essere utile ".

Se la maggior parte della tua squadra ti vede come un guru del design e ti vedono costantemente come riferimento a un modello di progettazione, realizzeranno la connessione da soli.

Problemi correlati