Il codice auto-documentato è più facile da leggere e mantenere
Segui Principio di Least Atonishment e del precetto di codice-come-documentazione : usa una variabile per un obiettivo, per renderne l'uso facile da capire e il codice facile da leggere senza spiegazioni.
Il codice strutturato correttamente è più semplice (quindi più economico) per (ri) utilizzare
Inoltre, qui sembrerebbe che query
sia sempre usato per preparare un'istruzione prima di eseguirla. Questo è probabilmente un segno che vuoi refactor parte di questo codice in uno (o più) Metodi helper per preparare ed eseguire la query (per conformarsi al principio ASCIUTTO ).
In questo modo, efficacemente:
- usa solo una variabile nel tuo metodo di supporto per identificare la query del contesto corrente,
- è necessario digitare meno codice ogni volta che si desidera rieseguire una query,
- rende il tuo codice più leggibile per gli altri.
Esempi:
Considera questo, preso dal tuo esempio, in cui la versione refactored è ovviamente migliore. Ovviamente il tuo frammento di codice era solo un esempio per lo scopo di questa domanda, ma il concetto è ancora valido e in scala.
Il tuo esempio 1:
Strings querycre,queryins,queryup,querydel;
querycre = 'Create table XYZ ...';
execute querycre ;
queryins = 'Insert into XYZ ...';
execute queryins ;
queryup = 'Update XYZ set ...';
execute queryup;
querydel = 'Delete from XYZ ...';
execute querydel ;
Il tuo esempio 2:
Strings query;
query= 'Create table XYZ ...';
execute query ;
query= 'Insert into XYZ ...';
execute query ;
query= 'Update XYZ set ...';
execute query ;
query= 'Delete from XYZ ...';
execute query ;
Esempio 3 (pseudo-codice refactored):
def executeQuery(query, parameters...)
statement = prepareStatement(query, parameters);
execute statement;
end
// call point:
executeQuery('Create table XYZ ... ');
executeQuery('Insert into XYZ ...');
executeQuery('Update XYZ set ...');
executeQuery('Delete from XYZ ...');
Il vantaggio viene mostrato con un normale riutilizzo.
Aneddoto personale
Inizialmente ero un programmatore C che lavorava con proprietà immobiliari limitate dello schermo, quindi riutilizzare le variabili aveva senso sia per il codice compilato (a quei tempi) che per consentire a più codici di essere letti contemporaneamente.
Tuttavia, dopo aver spostato i linguaggi di livello superiore e aggiornato la programmazione funzionale, ho preso l'abitudine di usare variabili immutabili e riferimenti immutabili laddove possibile per limitare gli effetti collaterali.
Cosa c'è dentro per me?
Se prendi l'abitudine di rendere immutabili tutti gli input della tua funzione e di restituire un nuovo risultato (come una vera funzione matematica), prendi l'abitudine di non duplicare i negozi.
Per estensione, questo porta a:
- stai scrivendo brevi funzioni,
- con obiettivi ben definiti,
- che sono più facili da capire,
- da riutilizzare,
- per estendere (sia per l'ereditarietà OO che per il concatenamento funzionale),
- e documento (come già auto-documentante).
Non sto dicendo che non ci sia alcun beneficio per lo stato mutabile qui, sto solo facendo notare come l'abitudine potrebbe crescere su di te e come influisce sulla leggibilità del codice.