Maison >interface Web >js tutoriel >Odeur de code – DirName et fichier

Odeur de code – DirName et fichier

Patricia Arquette
Patricia Arquetteoriginal
2024-11-11 07:17:03622parcourir

Évitez les noms ambigus pour les variables de chemin

TL;DR : utilisez des noms clairs pour une meilleure compréhension du code.

Problèmes

  • Objectif variable peu clair
  • Défaut de bijection
  • Contexte trompeur
  • Code répétitif
  • Entretien plus dur
  • Lisibilité réduite
  • Abréviations
  • Augmentation de la charge cognitive

Solutions

  1. Honorez la Bijection
  2. Utilisez des noms précis
  3. Éviter toute ambiguïté
  4. Gardez le contexte clair
  5. Extraire le code réutilisable
  6. Suivez les conventions de dénomination
  7. Réifier les noms avec leurs règles

Contexte

Lors de la gestion d'un seul fileName ou directoryPath, des noms vagues comme file ou dirName créent de la confusion.

  • Un fichier doit représenter un fichier
  • Un fileName doit représenter le nom d'un fichier
  • fileContents doit représenter le contenu d'un fichier
  • Un fileHandler doit représenter un pointeur vers une ressource externe
  • dirName devrait être directoryPath

Des noms clairs comme fileName pour les noms et directoryPath pour les répertoires communiquent le rôle de chaque variable.

Lorsque vous nommez un fichier variable, cela peut dérouter les autres quant à son objectif. Stocke-t-il un objet fichier ou simplement le nom du fichier ?

Lorsque vous nommez une variable dirName au lieu de directoryName, cela conduit à une ambiguïté.

Les noms de variables clairs et descriptifs améliorent la lisibilité et la maintenabilité du code, en particulier dans les environnements collaboratifs.

Exemple de code

Faux

function importBoardGameScores(file) {
  if (file) {
    const data = fs.readFileSync(file, 'utf-8');
    // Process board game scores...
  }
}

function importDirectoryScores(dirName) {
  // 'dir' is an abbreviation
  const files = fs.readdirSync(dirName);
  files.forEach(file => {
    const data = fs.readFileSync(`${dirName}/${file}`, 'utf-8');
    // Process each file's board game scores...
  });
  }
}

Droite

function importBoardGameScores(fileName) {
  if (fileName) {
    const data = fs.readFileSync(fileName, 'utf-8');
    // Process board game scores...
  }
}

function importDirectoryBoardGamesScores(directoryPath) {
    const fileNames = fs.readdirSync(directoryPath);
    // Note the variable holding filenames 
    // and not files

   fileNames.forEach(filename => {
        const fullPath = path.join(directoryPath, filename);
        const scores = importBoardGameScores(fullPath);
        allScores.push(scores);
   });

   return allScores.flat();


// You can also reify the concept of a filename
// And avoid repeating the rules everywhere

class Filename {
    value;

    constructor(value) {
        this.validateFilename(value);
        this.value = value;
    }

    validateFilename(value) {      
        const invalidCharacters = /[<>:"/\|?*\x00-\x1F]/g;
        if (invalidCharacters.test(value)) {
            throw new Error
              ('Filename contains invalid characters');
        }

        if (/^[. ]+$/.test(value)) {
            throw new Error
              ('Filename cannot consist only of dots or spaces');
        }

        if (value.length > 255) {
            throw new Error
              ('Filename is too long');
        }
    }

    toString() {
        return this.value;
    }

    get value() {
        return this.value;
    }
}

Détection

[X] Semi-automatique

Recherchez des noms génériques dans les fichiers de gestion de code ou les chemins de répertoire comme file ou dirName.

Balises

  • Nommer

Niveau

[x] Débutant

Génération d'IA

Les modèles d'IA peuvent utiliser par défaut des noms ambigus comme file ou dirName sans instructions spécifiques.

L'ajout de directives de dénomination descriptive et d'extraction de code peut améliorer le résultat de l'IA.

Détection IA

Les outils d'IA peuvent corriger cette odeur en utilisant des conventions de dénomination claires et en suggérant l'extraction de code si vous y êtes invité pour éviter le code redondant.

Essayez-les !

Rappelez-vous : les assistants IA font beaucoup d'erreurs

Without Proper Instructions With Specific Instructions
ChatGPT ChatGPT
Claude Claude
Perplexity Perplexity
Copilot Copilot
Gemini Gemini

Conclusion

En utilisant des noms précis comme fileName et directoryPath et en extrayant des méthodes réutilisables, vous améliorez la clarté et la maintenabilité du code.

Ces pratiques simples aident à réduire la redondance et à garder votre code compréhensible.

Rapports

Code Smell  - DirName and File

Code Odeur 33 - Abréviations

Maxi Contieri ・ 24 novembre 2020

#oop #codenewbie #programmation #tutoriel

Clause de non-responsabilité

Les odeurs de code sont mon opinion.

Crédits

Photo de Gabriel Heinzer sur Unsplash


Le code doit être écrit pour être lu par les humains en premier, et par les machines ensuite.

Don Laabs

Code Smell  - DirName and File

Citations intéressantes sur le génie logiciel

Maxi Contieri ・ 28 décembre 20

#codenewbie #programmation #citations #logiciel

Cet article fait partie de la série CodeSmell.

Code Smell  - DirName and File

Comment trouver les parties puantes de votre code

Maxi Contieri ・ 21 mai '21

#codenewbie #tutoriel #qualitéducode #débutants

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn