Il codice auto-documentato è più facile da leggere e mantenere
Segui il principio del minimo stupore e del precetto del codice come documentazione : usa una variabile per un obiettivo, sia per renderlo facile da capire sia per il codice facile da leggere senza spiegazioni.
Il codice correttamente strutturato è più facile (quindi più economico) da (ri) utilizzare
Inoltre, qui sembrerebbe che query
sia sempre usato per preparare un'istruzione prima di eseguirla. Questo è probabilmente un segno che si vuole refactoring parte di questo codice in uno (o più) metodi di supporto per preparare ed eseguire la query (per conformarsi al principio DRY ).
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,
- rendere il tuo codice più leggibile per gli altri.
Esempi:
Considera questo, preso dal tuo esempio, dove la versione refactored è ovviamente migliore. Ovviamente il tuo frammento era solo un esempio ai fini 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 si manifesta con un riutilizzo regolare.
Aneddoto personale
Inizialmente ho iniziato come programmatore in C lavorando con proprietà dello schermo limitate, quindi riutilizzare le variabili aveva senso sia per il codice compilato (allora) che per consentire la lettura di più codici contemporaneamente.
Tuttavia, dopo essere passato a linguaggi di livello superiore e approfondito la programmazione funzionale, ho preso l'abitudine di utilizzare variabili immutabili e riferimenti immutabili, ove possibile, per limitare gli effetti collaterali.
Che vantaggio ne ricavo?
Se prendi l'abitudine di rendere immutabili tutti gli input della tua funzione e di restituire un nuovo risultato (come farebbe 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,
- riutilizzare,
- estendere (sia per eredità OO che per concatenamento funzionale),
- e documentare (come già auto-documentante).
Non sto dicendo che non ci sia alcun vantaggio nello stato mutevole qui, sto solo sottolineando come l'abitudine potrebbe crescere su di te e come influisce sulla leggibilità del codice.