mercoledì 19 marzo 2008

Qualche veloce considerazione sui pattern

Molto spesso c'è confusione circa alcuni concetti relativi ai desgin pattern; in questo brevissimo post tento di fare chiarezza su alcuni punti fondamentali.

  1. Il concetto di "design-pattern" nasce con il famoso libro di Gamma et. al (GoF). FALSO! I design pattern esistevano già da tempo, ed erano applicati anche a scienze differenti dalla computer-science, ad esempio nell'urbanistica. Il libro della GoF ha messo in luce diversi design-pattern applicati alla computer-science.
  2. Il libro della GoF è la fonte più autorevole sui design-pattern per la computer science. FALSO! Nonostante sia universalmente riconosciuto come uno dei testi più autorevoli sui design-patterns, il libro della GoF non è l'unico testo in circolazione. Ad esempio esistono cinque testi sul pattern-oriented software architecture (chiamati POSA books) che trattano design patterns sotto diversi punti di vista. I vari testi sui design pattern si differenziano per l'analisi che ne fanno, per l'esame delle forze in gioco (contesto iniziale) e del contesto risultante.
  3. Essendo i design pattern corretti, usare un design pattern nel proprio codice significa scrivere codice migliore. FALSO! I desgin pattern sono soluzioni a problemi noti, non vi è quindi nessun motivo per applicare un design pattern al proprio codice se non vi è traccia di un problema risolvibile tramite un pattern.
  4. I pattern sono innovazione. FALSO! I pattern descrivono soluzioni usate di frequente in determinati contesti, e rappresentano per tanto delle good-practice piuttosto che innovazioni. Introdurre patterns nel proprio codice non significa innovarlo, quanto renderlo maggiormente documentato e manutenibile.
  5. I pattern sono una forma di documentazione. VERO! I pattern consentono di spiegare e comprendere meglio come un determinato software faccia fronte a contesti, situazioni e problemi specifici.
  6. I pattern possono essere introdotti nel proprio codice in forma automatica. VERO! Esistono diversi tool che consentono di introdurre alcuni pattern nel proprio codice in maniera automatica (o semi-automatica).
  7. I pattern sono sempre automatizzabili. FALSO! Un pattern è una cosa ben differente da un template di codice. Seppur alcuni pattern possano essere introdotti nel proprio codice in modo automatico, questo non è sempre il caso generale. In effetti, se si cercano pezzi di codice per implementare un pattern si sta guardando il problema da una angolazione sbagliata e si rischia anzi di introdurre codice errato.
  8. I pattern rendono il codice maggiormente manutenibile. VERO! Essendo una forma di documentazione, ed essendo generalmente noti, i pattern consentono di migliorare la leggibilità e la comprensibilità del codice, nonché a migliorarne in molti casi la modularità. Tutte caratteristiche queste che migliorano la manutenibilità del codice stesso.
  9. I pattern sono svincolati dal linguaggio di programmazione. VERO! I pattern rappresentano concetti e soluzioni che possono essere implementati in diversi modi e diversi linguaggi. Lo stesso pattern può essere implementato in Java come in C#.
  10. I pattern sono legati alla programmazione OOP. FALSO! I pattern si applicano a qualsiasi paradigma di programmazione. Oggi giorno è molto facile trovare pattern (e relative implementazioni) legate all'OOP o all'AOP, ma solo perché tali paradigmi sono fra i più diffusi e moderni disponibili.

Nessun commento: