Aikido

Comment découper de gros fichiers de code : organiser le code pour en faciliter la maintenance

Lisibilité

Règle

Éviter trop trop trop volumineux.
Les fichiers avec multiples responsabilités
sont difficiles difficile difficiles à maintenir.

Langues prises en charge : 45+

Introduction

Les fichiers qui s'étendent sur des milliers de lignes traitent généralement de multiples questions sans rapport les unes avec les autres, ce qui rend difficile la localisation d'une fonctionnalité spécifique. Un fichier de 3000 lignes utils.js contenant des aides à la validation, du formatage de chaînes, de la manipulation de dates et des utilitaires d'API oblige les développeurs à parcourir un code sans rapport avec le leur pour trouver ce dont ils ont besoin. Les fichiers volumineux créent également des conflits de fusion lorsque plusieurs développeurs modifient simultanément différentes sections.

Pourquoi c'est important

La maintenabilité du code : Les fichiers volumineux mélangent des fonctionnalités sans rapport les unes avec les autres, ce qui oblige les développeurs à comprendre des centaines de lignes de code non pertinentes pour modifier une fonction. Trouver une logique spécifique devient un exercice de recherche plutôt que de naviguer vers un fichier portant le nom approprié.

Conflits de contrôle de version : Lorsque plusieurs développeurs travaillent sur des fonctionnalités différentes dans un même fichier volumineux, les conflits de fusion sont fréquents. Des fichiers plus petits et plus ciblés permettent un développement parallèle, chaque développeur travaillant dans des fichiers distincts.

Efficacité de l'examen du code : L'examen des modifications apportées à des fichiers volumineux nécessite davantage de contexte. Les examinateurs doivent comprendre comment les modifications affectent d'autres codes non liés dans le même fichier. Les fichiers plus petits rendent l'étendue des changements évidente, ce qui accélère les révisions.

Exemples de code

❌ Non conforme :

// utils.js (1500+ lignes)
fonction validateEmail(email) { /* ... */ }
fonction validatePhone(téléphone) { /* ... */ }
fonction formatCurrency(montant) { /* ... */ }
fonction formatDate(date) { /* ... */ }
fonction parseJSON(str) { /* ... */ }
function apiRequest(url) { /* ... */ }
fonction debounce(fn, delay) { /* ... */ }
fonction accélérateur(fn, limit) { /* ... */ }
// ... Plus de 100 autres fonctions non liées

Pourquoi c'est mal : Un fichier massif contient des utilitaires de validation, de formatage, d'analyse, d'appels d'API et de performance. Recherche debounce() nécessite de faire défiler des centaines de fonctions sans rapport les unes avec les autres. Les multiples équipes qui modifient ce fichier créent des conflits de fusion constants.

✅ Conforme :

// validation/email.js
export fonction validateEmail(email) { /* ... */ }

// validation/phone.js
export fonction validatePhone(téléphone) { /* ... */ }

// formatage/monnaie.js
export fonction formatCurrency(montant) { /* ... */ }

// formatage/date.js
export fonction formatDate(date) { /* ... */ }

// api/request.js
export fonction apiRequest(url) { /* ... */ }

// performance/debounce.js
export fonction debounce(fn, delay) { /* ... */ }

Pourquoi cela est-il important ? Chaque fonction utilitaire se trouve dans un fichier dédié au sein de répertoires catégorisés. Recherche debounce() signifie qu'il faut naviguer vers performance/debounce.js directement. Les équipes travaillant sur différents services publics n'entrent pas en conflit parce qu'ils se trouvent dans des fichiers distincts.

Conclusion

Dans la mesure du possible, les fichiers ne doivent pas dépasser 500 lignes. Lorsque les fichiers dépassent cette limite, il convient de rechercher des responsabilités distinctes qui peuvent être extraites dans des modules séparés. Organisez les fichiers apparentés dans des répertoires afin de maintenir la structure tout en gardant les fichiers individuels concentrés et faciles à maintenir.

FAQ

Vous avez des questions ?

Quelle est la taille maximale acceptable pour un fichier ?

L'objectif est de ne pas dépasser 500 lignes par fichier. Les fichiers de plus de 500 lignes indiquent généralement des responsabilités multiples qu'il convient de scinder. Le nombre exact importe moins que le fait que le fichier ait un objectif unique et clair. Un fichier de 600 lignes mettant en œuvre un algorithme complexe peut convenir, mais un utilitaire de 600 lignes doit être scindé.

Comment diviser des fichiers volumineux sans casser les importations ?

Créez un nouveau répertoire avec des fichiers ciblés, puis ajoutez un fichier d'index qui réexporte tout : export * from './validation.js'. Mettez progressivement à jour les importations. Les outils tels que les IDE peuvent automatiquement mettre à jour les chemins d'importation lors du déplacement du code entre les fichiers.

Qu'en est-il du code généré ou des fichiers de configuration ?

Le code généré peut être volumineux car les humains ne le maintiennent pas directement. Les fichiers de configuration (webpack.config.js, etc.) peuvent également dépasser les limites normales. La règle vise le code écrit par l'homme où la maintenabilité est importante. Marquez clairement les fichiers générés et excluez-les des vérifications de la taille des fichiers.

Comment gérer les fichiers qui deviennent naturellement volumineux ?

Extrayez les fonctions d'aide, déplacez les classes apparentées dans des fichiers distincts, divisez-les par fonction ou par responsabilité. Si le fichier d'un composant devient volumineux, séparez le composant de sa logique, de ses styles et de ses tests. Pour la gestion des états, diviser les réducteurs par domaine. Il y a toujours un endroit où le code peut être divisé.

Obtenir la sécurité gratuitement

Sécurisez votre code, votre cloud et votre environnement d'exécution dans un système central.
Trouvez et corrigez rapidement et automatiquement les vulnérabilités.

Aucune carte de crédit n'est requise | Scanner les résultats en 32sec.