Regola
Evita file eccessivamente grandi.
I file di grandi dimensioni
con responsabilità multiple
risultano difficili da mantenere.
Linguaggi supportati: 45+Introduzione
I file che si estendono per migliaia di righe gestiscono in genere molteplici aspetti non correlati, rendendo difficile individuare una specifica funzionalità. Un file da 3000 righe utils.js contenente helper di convalida, formattazione di stringhe, manipolazione di date e utilità API costringe gli sviluppatori a scorrere codice non correlato per trovare ciò di cui hanno bisogno. File di grandi dimensioni creano anche conflitti di merge quando più sviluppatori modificano diverse sezioni contemporaneamente.
Perché è importante
Manutenibilità del codice: I file di grandi dimensioni combinano funzionalità non correlate, richiedendo agli sviluppatori di comprendere centinaia di righe di codice irrilevante per modificare una singola funzione. Trovare una logica specifica diventa un esercizio di ricerca piuttosto che una navigazione verso un file opportunamente denominato.
Conflitti nel controllo di versione: Quando più sviluppatori lavorano su funzionalità diverse nello stesso file di grandi dimensioni, i conflitti di merge si verificano frequentemente. File più piccoli e mirati consentono lo sviluppo in parallelo poiché ogni sviluppatore lavora su file separati.
Efficienza della code review: La revisione delle modifiche in file di grandi dimensioni richiede maggiore contesto. I revisori devono comprendere in che modo le modifiche influiscono su altro codice non correlato nello stesso file. File più piccoli rendono evidente l'ambito delle modifiche, velocizzando le revisioni.
Esempi di codice
❌ Non conforme:
// utils.js (1500+ righe)
function validateEmail(email) { /* ... */ }
function validatePhone(phone) { /* ... */ }
function formatCurrency(amount) { /* ... */ }
function formatDate(date) { /* ... */ }
function parseJSON(str) { /* ... */ }
function apiRequest(url) { /* ... */ }
function debounce(fn, delay) { /* ... */ }
function throttle(fn, limit) { /* ... */ }
// ... altre 100+ funzioni non correlate
Perché è errato: Un singolo file massiccio contiene convalida, formattazione, analisi, chiamate API e utilità di performance. Trovare debounce() richiede lo scorrimento di centinaia di funzioni non correlate. Più team che modificano questo file creano costanti conflitti di merge.
✅ Conforme:
// validation/email.js
export function validateEmail(email) { /* ... */ }
// validation/phone.js
export function validatePhone(phone) { /* ... */ }
// formatting/currency.js
export function formatCurrency(amount) { /* ... */ }
// formatting/date.js
export function formatDate(date) { /* ... */ }
// api/request.js
export function apiRequest(url) { /* ... */ }
// performance/debounce.js
export function debounce(fn, delay) { /* ... */ }
Perché questo è importante: Ciascuna funzione di utilità si trova in un file dedicato all'interno di directory categorizzate. Trovare debounce() significa navigare direttamente verso performance/debounce.js I team che lavorano su utilità differenti non entrano in conflitto perché si trovano in file separati.
Conclusione
Quando possibile, mantieni i file al di sotto delle 500 righe. Quando i file superano questo limite, individua le singole responsabilità che possono essere estratte in moduli separati. Organizza i file correlati in directory per mantenere una struttura ordinata, assicurandoti che ogni singolo file rimanga mirato e manutenibile.

