Regola
Rimuovi i blocchi di codice commentati
Il codice commentato genera rumore, diventa obsoleto
e appartiene alla cronologia del control version, non al codebase.Introduzione
Il codice commentato si accumula quando gli sviluppatori non sono sicuri di aver bisogno della vecchia logica in futuro. Qualcuno commenta una funzione "per sicurezza" invece di eliminarla, e quella rimane lì per sempre. Nessuno sa se questo codice funzioni ancora, perché sia stato disattivato o se sia sicuro rimuoverlo. Il codebase si riempie di fantasmi di implementazioni passate che distraggono dalla comprensione di ciò che è realmente in esecuzione in produzione.
Perché è importante
Manutenibilità del codice: Il codice commentato costringe chi legge a filtrare mentalmente ciò che è reale da ciò che è dormiente. Durante la code review, è impossibile capire se questi blocchi siano esperimenti temporanei, opzioni di rollback importanti o residui dimenticati di anni fa. Questo rumore rende più difficile comprendere la logica effettiva, trovare sezioni di codice rilevanti e revisionare le modifiche in modo significativo.
Implicazioni sulla sicurezza: Controlli di autenticazione, logica di validazione o funzionalità di sicurezza commentate rivelano che queste protezioni esistevano ma sono state disattivate deliberatamente. Se il codice commentato contiene credenziali, chiavi API o URL interni, stai distribuendo dati sensibili in chiaro. Gli attaccanti che esaminano il codebase vedono esattamente quali misure di sicurezza hai preso in considerazione e poi rimosso.
Confusione nel controllo di versione: I diff di Git si riempiono di blocchi commentati che non subiscono reali modifiche. Quando devi rintracciare quando è cambiata la logica o perché una funzionalità funziona in un certo modo, le alternative commentate oscurano la cronologia reale. La ricerca nel codebase restituisce corrispondenze in codice morto, sprecando tempo a investigare percorsi che non vengono eseguiti.
Esempi di codice
❌ Non conforme:
async function createUser(userData) {
// const hashedPassword = await bcrypt.hash(userData.password, 10);
const user = await db.users.create({
email: userData.email,
password: userData.password,
// password: hashedPassword,
role: userData.role || 'user'
});
// await sendWelcomeEmail(user.email);
// await notifyAdmins(user);
// Old validation approach
// if (!isValidEmail(user.email)) {
// throw new Error('Invalid email');
// }
return user;
}
Perché è errato: L'hashing delle password commentato rivela che le password vengono memorizzate in chiaro, una vulnerabilità di sicurezza critica. Nessuno sa se l'email di benvenuto e la notifica dell'amministratore debbano essere abilitate, e la vecchia validazione suggerisce che la convalida dell'email potrebbe mancare.
✅ Conforme:
async function createUser(userData) {
if (!isValidEmail(userData.email)) {
throw new Error('Invalid email');
}
const hashedPassword = await bcrypt.hash(userData.password, 10);
const user = await db.users.create({
email: userData.email,
password: hashedPassword,
role: userData.role || 'user'
});
await sendWelcomeEmail(user.email);
await notifyAdmins(user);
return user;
}
Perché questo è importante: La funzione è chiara e completa e mostra esattamente cosa viene eseguito in produzione. La validazione delle email viene eseguita per prima, le password vengono sottoposte a hashing correttamente e tutte le notifiche vengono inviate senza ambiguità su ciò che è abilitato.
Conclusione
Elimina il codice invece di commentarlo. Il tuo sistema di controllo di versione preserva ogni riga scritta, accessibile tramite git log e git blame quando ne hai bisogno. Mantenere il codice commentato nel repository crea solo rumore che oscura la logica effettiva e rende la navigazione nel codebase più difficile.

