Che cos'è la codifica software? (Anti-pattern)
-
05-07-2019 - |
Domanda
Ho trovato la la voce di Wikipedia sul codice di codifica soft-pattern e confuso. Quindi cos'è il soft coding? In quali contesti è una cattiva pratica (anti-pattern)? Inoltre, quando potrebbe essere considerato utile e, in tal caso, come dovrebbe essere implementato?
Soluzione
Risposta breve: andare agli estremi per evitare l'Hard Coding e finire con qualche strato di astrazione contorto del mostro per sostenere che è peggio che se i valori del hard coded fossero stati lì dall'inizio. cioè oltre l'ingegneria.
Come:
SpecialFileClass file = new SpecialFileClass( 200 ); // hard coded
SpecialFileClass file = new SpecialFileClass( DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue());
Altri suggerimenti
Il punto principale dell ' Articolo WTF quotidiano sulla codifica software è quello a causa dell'ottimizzazione prematura e temo che un sistema che sia ben definito e che non vi siano conoscenze duplicate venga modificato e diventi più complesso senza necessità.
La cosa principale che dovresti tenere a mente è se le tue modifiche migliorano davvero il tuo sistema ed evitano di etichettare leggermente qualcosa come anti-schema ed evitarlo in ogni modo. Configurare il sistema ed evitare l'hardcoding è una cura semplice per la duplicazione della conoscenza del sistema (vedere il punto 11: "DRY Non ripetere te stesso" in La guida di riferimento rapido del programmatore Pragmatic ) Questa è la necessità alla base del suggerimento di evitare la codifica. Cioè idealmente dovrebbe esserci solo un posto nel tuo sistema (che sarebbe codice o configurazione) che dovrebbe essere modificato se devi cambiare qualcosa di semplice come un messaggio di errore.
Ola, un buon esempio di un vero progetto in cui è incorporato il concetto di softcoding è il Django progetto. Il loro file settings.py estrae determinate impostazioni dei dati in modo che tu possa apportare le modifiche lì invece di incorporarle nel tuo codice. Puoi anche aggiungere valori a quel file se necessario e usarli dove necessario.
http://docs.djangoproject.com/en/dev/topics/ impostazioni /
Esempio :
Potrebbe trattarsi di un frammento del file settings.py:
num_rows = 20
Quindi all'interno di uno dei tuoi file puoi accedere a quel valore:
from django.conf import settings
...
for x in xrange(settings.num_rows):
...
Il massimo del softcoding:
const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana.