La formulazione di questo articolo è piuttosto sfortunata, perché potrebbe essere interpretata nel senso di "trovare modelli di software ben noti e unirli insieme per creare un'applicazione funzionante". Questo è un approccio comunemente usato dagli sviluppatori inesperti, e funziona, purché tu capisca i modelli, come applicarli correttamente e quale sia il loro caso d'uso appropriato. Gli sviluppatori inesperti spesso raggiungono questo approccio troppo presto, prima che ne comprendano appieno le implicazioni.
Gli sviluppatori esperti sono in grado di creare i propri schemi di codice.
A titolo di spiegazione, fornirò un esempio. Supponiamo che tu abbia il seguente codice:
string text;
switch (number)
{
case 1:
text = "alpha";
break;
case 2:
text = "bravo";
break;
case 3:
text = "charlie";
break;
...etc.
}
In C #, questo può essere semplificato inserendolo in una funzione, poiché le istruzioni break
vengono eliminate. Quindi il codice ora diventa:
switch (number)
{
case 1: return "alpha";
case 2: return "bravo";
case 3: return "charlie";
...etc.
}
Ovviamente, la vera vittoria è quando si riconosce che questa non deve essere necessariamente un'istruzione switch
. Invece, puoi creare un dizionario:
var words = new Dictionary<int, string>
{
{ 1, "alpha" },
{ 2, "bravo" },
{ 3, "charlie" }
...etc
}
e ora puoi solo dire
var word = words[2]; // bravo
Questo è più potente di un'istruzione switch, per diversi motivi:
-
Il dizionario non deve essere hardcoded, come fa l'istruzione switch. Puoi scegliere di caricare il dizionario da qualsiasi origine dati compatibile (compresi i file di configurazione XML, un database o anche un feed di dati remoto) e continuerà a produrre valori allo stesso modo.
-
È possibile aggiungere nuove coppie chiave / valore al dizionario o eliminare valori non più necessari in fase di runtime. Non deve essere una lista fissa.
-
Il dizionario scalerà meglio (manterrà buone prestazioni anche se ha un gran numero di voci).
Il dizionario è un potente modello di software che ha una vasta gamma di usi. È una struttura di dati generalizzata; puoi scegliere i tipi su cui opera e garantirgli un certo livello di prestazioni. Puoi anche avere dizionari di dizionari.
Per i più grandi lavori di archiviazione e recupero dei dati, lo sviluppatore esperto sa come raggiungere un database, perché è una tecnologia collaudata che fornisce determinate garanzie sul modo in cui funziona.
Questo è ciò che il post del blog intende per "codice di scrittura per modelli, non per istanze specifiche".