Ogni cosa ha un costo, ea volte i benefici non valgono quello che devi pagare per loro. Tutte le astrazioni hanno un costo, in termini di velocità di esecuzione, velocità di sviluppo o richieste di cellule cerebrali. Parte del mestiere dello sviluppo del software sta avendo un occhio chiave in cui ne valgono la pena.
Le cose hardcoding sono i mezzi più semplici per mettere i dati in un programma. È semplice da fare, ma il suo costo è la difficoltà di cambiare il codice. Fondamentalmente è anche il modo più rapido per ottenere i dati, ed è praticamente garantito lavorare ogni volta senza eccezioni. Solo le persone che programmano sonde spaziali e pacemaker devono preoccuparsi che non funzioni.
D'altra parte, diciamo che hai messo i dati in un file o database. Ora hai una quantità relativa del lavoro aggiuntivo di capire come ottenere quei dati. Se stai usando un file di configurazione, ora devi gestire il file mancante e gestirlo. Cosa succede se gli utenti vogliono valori predefiniti se non hanno una configurazione? Dove memorizzi le impostazioni predefinite? Dove memorizzi i dati che dicono dove trovare il file? La tana del coniglio può davvero fare in profondità. Tutte queste domande devono essere risolte. Hardcoding non ha nessuno di questi.
Più astrazioni si accumulano in più luoghi in cui i bug possono essere in agguato, più difficile è testare e più difficile è pensare a capire cosa sta accadendo nel tuo programma.
Certo, librerie DB, OEM, librerie di file di configurazione possono semplificare un po 'di tutto questo, ma saranno senza dubbio più lavoro, più codice e più posti in cui andare male di un array hardcoded.
Quindi devi valutare cosa è appropriato. Non posso darti una risposta che puoi testare meccanicamente perché finora è un giudizio che solo noi umani possiamo fare. È necessario valutare la probabilità di cambiamento dei dati, il costo di gestione di tale cambiamento rispetto al costo di gestione delle astrazioni. Come molti programmi, troverai una combinazione di dati hardcoded, in file flat e in un database, per qualsiasi programma ragionevolmente definito.
Il tuo codice di esempio che usa una serie di dichiarazioni di rendimento è uno degli esempi più estremi di "quando tutto ciò che hai è un martello, tutto sembra un chiodo" che ho visto da molto tempo. Quando arrivano le risposte, penso che dovresti leggerle e riflettere seriamente sul fatto che una determinata astrazione che stai utilizzando sia appropriata per il compito in questione, dal momento che il tuo utilizzo e la difesa di tale design significa che hai ancora bisogno di sviluppare questo senso.