Mentre mi rendo conto che ogni lingua ha una propria convenzione per l'indentazione, non posso fare a meno di essere infastidita da qualcosa che ho scoperto di recente. Considera questo codice dal manuale PHP:Ritorno dell'indice PHP vs JavaScript
Si noti che ogni caso è rientrato dall'istruzione switch. Questo ha senso, poiché il codice è più facile da leggere e il corpo del blocco è contenuto un livello al suo interno.
Tuttavia, quando prova la dichiarazione equivalente JavaScript interruttore nella JSLint:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
... visualizza un errore che mi diceva che dovrebbe apparire come questo, invece:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
Sembra controintuitivo, poiché ogni caso è ora in linea con il blocco dell'interruttore stesso. Non riesco a immaginare alcun motivo per cui ciò sarebbe considerato migliore, tanto meno che si innesca un errore.
JSLint è errato o segue solo la convenzione? Se quest'ultimo è vero, perché la convenzione non dovrebbe essere indentata per chiarezza?
JSLint in realtà si lamenta di questo genere di cose? * -dies- * – BoltClock
JS e PHP non sono Python, usa l'indentazione che ti piace. – Shikiryu
Vorrei usare 'if ([" mela "," bar "," torta "]. IndexOf (i)! = -1) avviso (" i is a "+ i);';) – Gumbo