Formattazione con rientri, spazi bianchi e nuove linee ovviamente rientrano nella categoria stile di codifica .
if (a == b) {
foo();
}
// vs
if (a == b)
{
foo();
}
D'altro canto, qualcosa che modifica il tempo di esecuzione di un programma non è più una questione di stile di codifica e diventa una questione di algoritmo .
for (var i = 0; i < a.length; i++) {
// Remove first element of the array.
a.shift();
}
// vs
for (var i = 0; i < a.length; i++) {
// Remove last element of the array.
a.pop();
}
Tuttavia, a che punto uno stile di codifica si trasforma in una questione di algoritmo?
In altre parole, quando si confrontano due possibili metodi per scrivere lo stesso programma, quando possiamo determinare oggettivamente se la scelta tra i due metodi è una preferenza nello stile di codifica o una differenza in algoritmo
Confrontando con true
una questione di stile o algoritmo di codifica?
if (a == true) {
// a is true.
}
// vs
if (a) {
// a is true.
}
Restituisce true
una questione di stile o algoritmo di codifica?
function isA(b) {
return this.a == b;
}
// vs
function isA(b) {
if (this.a == b) {
return true;
}
return false;
}
Che ne è delle condizioni di fusione in un'istruzione if
?
if (a > 0) {
return foo();
}
if (b == 0) {
return foo();
}
// vs
if (a > 0 || b == 0) {
return foo();
}
Condizioni del ciclo?
// Loop 10 times.
for (var i = 0; i < 10; i++);
// vs
// Loop 10 times.
for (var i = 1; i <= 10; i++);
Nested if
statement?
function foobar() {
if (a) {
return foo();
}
if (b) {
return bar();
}
return barfoo();
}
// vs
function foobar() {
if (a) {
return foo();
} else {
if (b) {
return bar();
} else {
return barfoo();
}
}
}
Questi esempi non cambiano esattamente il tempo di esecuzione di un programma, ma non sono esattamente solo indentazioni, spazi bianchi o nuove modifiche di linea. Di solito non sono menzionati nelle guide di stile di codifica per la maggior parte delle lingue.
Dati questi esempi sopra e altri esempi simili, è la differenza uno stile di codifica o algoritmo ? O c'è un termine completamente diverso per questo?
Ad esempio, se io sono qualcuno che usa for (var i = 0; i < 10; i++)
, ho semplicemente una preferenza diversa per lo stile di codifica rispetto a qualcuno che usa for (var i = 1; i <= 10; i++)
? O c'è qualcosa di più oltre allo stile di codifica solo ? A che punto non è più solo lo stile di codifica e inizia a diventare parte dell'algoritmo?