2008-09-18 14 views
5

Quando si parla di modelli di design, immagino ci siano tre tipi di negozi. Coloro che non conoscono un modello se li colpisce in faccia - di solito preferiscono l'approccio Ctrl-C/Ctrl-V al riutilizzo del codice. Coloro che trascorrono ore al giorno a cercare il loro codice legacy nella speranza di implementare uno schema più grande - di solito trascorrono più tempo a rifare il codice di programmi semplici di quelli che sarebbero mai stati spesi in cento anni di manutenzione. E infine, quelli che percorrono la via di mezzo usando schemi quando hanno senso, e codificano ciò che viene prima per il codice minimamente esposto.Quali sono le migliori risorse per i modelli di progettazione e i loro usi?

Mi chiedo se qualcuno ha bloccato un buon approccio ad una incorporazione bilanciata dell'uso del modello nel ciclo di vita dello sviluppo del software. Inoltre, qual è la migliore risorsa sul Web per i modelli, i loro fattori motivanti e il loro uso corretto?

Grazie.

+0

È meglio se si richiede una singola risorsa per risposta. Rispondere alle risposte può essere correttamente ordinato in base ai voti per rivelare il migliore. QUINDI domande sono pensate per funzionare in questo modo. –

risposta

6

Ci sono un sacco di diverse famiglie di 'modello' là fuori, ma prendendo la tua domanda suoi termini più ampi ...

mi consiglia: Organisational Patterns

  • Il Gruppo Hillside

    • Jim Coplien wiki
    • Kevlin di Henney site è ricca di ottimi collegamenti & carte

    Offline (i miei preferiti):

    Offline (popolare): Patterns

    • GoF design
    • Refactoring di Fowler: migliorare la progettazione del codice esistente
  • 0

    penso che la miglior risorsa web contenente informazioni sui modelli e refactoring - http://sourcemaking.com

    +0

    Questo sito elabora i modelli elencati nel libro GoF. Sebbene questo sia il libro più conosciuto sui pattern, generalmente non si considera che abbia fatto un servizio alla qualità del software o al movimento del pattern. –

    0

    La definizione e la risposta originale è l'origine del concetto, in Design patterns. Questo libro tratta il concetto a un livello molto teortico, piuttosto che il linguaggio gestionale che si è infiltrato nell'area. La loro visione è che i modelli di design sono solo nomi per espressioni comuni; ne enumerano alcuni e giustificano le loro posizioni.

    Evitano il tipo di domanda "Quale modello di progettazione dovrei usare", invece di trattare il problema come "Sto naturalmente entrando in un'area ben conosciuta? Se così fosse, gli altri potrebbero essermi d'aiuto?". I modelli di design, per me, non sono come componenti prefabbricati che si incollano insieme per creare una soluzione. Sono solo repository di riferimento per quando ti imbatti in una situazione simile a quella che altri hanno contrastato, e dai nomi per permettere alle persone di riferirsi alle situazioni generali in conversazione.

    4
    +0

    Questo sito elabora i modelli elencati nel libro GoF. Sebbene questo sia il libro più conosciuto sui pattern, generalmente non si considera che abbia fatto un servizio alla qualità del software o al movimento del pattern. –

    1

    buon uso dei modelli dipende dalla conoscenza ge ed esperienza; non c'è una formula per questo. Una buona cosa da fare è avere qualcuno che abbia esperienza nell'applicare giudiziosamente nei modelli per rivedere regolarmente il codice di tutti gli altri membri del team per assicurarsi che non stiano sfruttando o sottovalutando schemi di progettazione. Non sono ricette pre-cotte: hanno bisogno di abilità per essere applicate in modo efficace e devono essere apprese.

    La mia prima e migliore esposizione a modelli di progettazione è stata la Portland Pattern Repository.

    1

    Tutti usano i modelli tutto il tempo. Potrebbero semplicemente non saperlo. Anche una cosa semplice come 'scorrere su una lista' è un modello.

    Penso che il modo migliore per incorporare gli schemi nel ciclo di lavoro, è solo usarli e fare riferimento ad essi per nome quando li discutiamo e quando commentate il vostro codice. Si spera che ciò comporterà una diffusione della conoscenza.

    Quindi, ad esempio, ad esempio, hai notato che ciò che fai è perfetto per Observer. Tu dici al tuo collega "Ehi, questo sarà davvero facile da fare se rendiamo questo oggetto un Osservatore, e questo oggetto è il suo soggetto."

    O il tuo collega capirà subito - sono schemi che ti fanno risparmiare tempo - o tu puoi istruirli, e il prossimo tempo che parli di Observer capiranno subito.

    E allo stesso tempo, stai diffondendo la conoscenza e individueranno le opportunità per utilizzare i nuovi modelli che hanno imparato da te. Questo vale in entrambi i modi, naturalmente. La prossima volta potrebbe essere loro insegnamento un nuovo modello.

    Tutto ciò fa affidamento sul fatto che il tuo collega non sia il tipo che annuisce e finge di capire qualcosa quando non lo fa. Hai bisogno di loro per dire "Ehi, hai nominato Observer, non penso di sapere cosa sia."

    0

    Gli schemi di progettazione sono divertenti in quanto si sa solo dove usare un modello quando si comprende appieno il motivo applicabile. Cose come Strategia, Osservatore, Iteratore puoi, dopo un po 'di pratica, usare senza pensare troppo.Se sei in C# usi sempre l'Iterator (IEnumerable ...) senza pensarlo come uno schema.

    A mio parere, questi modelli semplici sono i migliori modelli. Hai già un lavoro da fare e stai cercando di adattare il tuo problema a un modello dopo l'altro quando non lo è piuttosto in forma è uno spreco di tempo e genera un codice errato.

    Il mio consiglio è di guardare i diagrammi uml per un pattern, e se è abbastanza semplice, quindi provare a impararlo abbastanza bene da poterlo richiamare più tardi. Un modello con un contratto più semplice è probabilmente più utile più spesso.

    1

    Sono un grande fan della serie e ho letto molti dei loro libri, quindi consiglierei Head First Design Patterns. Puoi leggerlo online tramite O'Reilly's Safari Bookshelf, ma la copia cartacea è accompagnata da un fantastico poster.

    0

    vorrei andare con la Banda dei Design Patterns di Quattro prenotare me stesso

    0

    Sono d'accordo con questi riferimenti, ma non ci sono novizio amichevole. Per i modelli di progettazione di apprendimento avvio rapido nel modo più semplice:

    Head First : design pattern

    Allora la vostra può controllare i libri più avanzati una volta ottenuto il quadro (un sacco di esempi pratici ;-))

    2

    L'uso di "modello" dipende in larga misura da

    1. il linguaggio utilizzato
    2. obiettivi uno piace achive.

    Il modello di progettazione può essere denominato sopravvalutato in linguaggi come C++, Java e simili. Nascondono l'inflessibilità introduce con tutti i tipi di problemi di battitura. Ecco un link sul quale schema "sopravvivere" in lingue meno restrittive: http://norvig.com/design-patterns/

    Un altro esempio è l'aspetto orientato tecniche di programmazione, in cui le cose con sforzo di valore, sono "introdotto" in una lingua non è "progettato" per esso.

    Anche la filosofia degli strumenti utilizzati ha una grande influenza. Paragoniamo, diciamo, i programmi e le soluzioni medi di PHP o Visual Basic in Smalltalk, Common Lisp, Haskell e simili.

    Anche gli elementi di sintassi hanno un grande impatto. Vedrete un sacco di loop simili diciamo in C, C++ (iteratori) ma se guardi in linguaggi che supportano le funzioni di ordine superiore troverai solo alcuni loop.

    È quindi necessario vedere quali persone modo fare programmazione di accesso, basso verso l'alto o verso il basso, la crescita frammentato o costruzione di piramidi, o qualsiasi altre preferenze individuali

    vi suggerisco di leggere il link citato, e quindi controllare le implementazioni in " diversi" linguaggi ....

    saluti Friedrich

    1

    non potevo più d'accordo con il commento di cui sopra. Uso schemi di progettazione dove posso, ma faccio sempre affidamento sul resto del mio team per comprendere veramente i vantaggi di un particolare modello. Altrimenti si finisce con un brutto codice e un involucro leggero che assomiglia in qualche modo al modello.

    Come da parte http://www.developer.com ha alcuni articoli al mese che riguardano i modelli di progettazione e le loro applicazioni. In bocca al lupo!

    Problemi correlati