Maison interface Web js tutoriel Comprendre le code propre : l'émergence ⚡️

Comprendre le code propre : l'émergence ⚡️

Oct 07, 2024 pm 02:21 PM

Understanding Clean Code: Emergence ⚡️

Le chapitre 12 de Clean Code, intitulé « Émergence », explore la façon dont un logiciel propre et bien structuré émerge de l'adhésion aux principes fondamentaux de conception.

L'émergence dans la conception de logiciels fait référence au processus par lequel un comportement ou une fonctionnalité complexe découle de règles simples et bien comprises.

Le respect de ces règles peut aider les développeurs à créer des logiciels faciles à maintenir, à étendre et à comprendre.


Ce chapitre se concentre sur les quatre règles de conception simple, en mettant l'accent sur la simplicité et la testabilité pour un code propre et efficace.


? Les quatre règles d'une conception simple

  • Réussit tous les tests
  • Révèle l'intention
  • Aucune duplication
  • Minimise le nombre de classes et de méthodes

Décomposons chacune de ces règles et voyons comment elles s'appliquent en utilisant JavaScript.


1. Réussit tous les tests

La base d'un logiciel propre et émergent est qu'il doit être fonctionnel.

Tout le code doit réussir ses tests, garantissant que le comportement attendu est préservé et que les nouvelles fonctionnalités n'introduisent pas de bogues.

En JavaScript, cela est souvent réalisé en écrivant des tests unitaires avec des bibliothèques comme Jest ou Mocha.


function add(a, b) {
  return a + b;
}

// Test (using Jest)
test('adds 1 + 2 to equal 3', () => {
  expect(add(1, 2)).toBe(3);
});


Copier après la connexion

En vous assurant que le logiciel réussit tous les tests, vous garantissez que le système fonctionne comme prévu.

Un code propre commence par des tests fiables. Sans cela, aucune des autres règles n'a d'importance.


2. Révèle l'intention

Le code doit communiquer ce qu'il fait. Des fonctions, variables et classes bien nommées peuvent rendre votre code facile à lire et à comprendre sans avoir besoin de commentaires.

Le code qui révèle son intention est explicite.

Mauvais nom :


function d(x) {
  return x * 2;
}


Copier après la connexion

Bon nom :


function doubleNumber(number) {
  return number * 2;
}


Copier après la connexion

Dans ce cas, doubleNumber() révèle clairement l'intention de la fonction.

Quiconque lit ce code peut immédiatement comprendre son objectif sans explications supplémentaires.

Cette pratique réduit non seulement la confusion mais améliore également la maintenabilité.


3. Pas de duplication

La duplication de code est l'un des plus grands ennemis des logiciels propres. Une logique répétée peut entraîner des bogues et un effort de maintenance accru.

L'objectif est de réduire la redondance en abstrayant les comportements courants dans des fonctions ou des modules réutilisables.

Duplication de code :


function calculateAreaOfSquare(side) {
  return side * side;
}

function calculateAreaOfRectangle(length, width) {
  return length * width;
}


Copier après la connexion

Les deux fonctions effectuent des calculs similaires. En refactorisant, nous pouvons éliminer la duplication.

Aucune duplication :


function calculateArea(shape) {
  if (shape.type === 'square') {
    return shape.side * shape.side;
  } else if (shape.type === 'rectangle') {
    return shape.length * shape.width;
  }
}


Copier après la connexion

En généralisant la fonction, nous éliminons la logique répétée et rendons le code plus maintenable.


4. Minimise le nombre de classes et de méthodes

La dernière règle de conception simple encourage à minimiser le nombre de classes et de méthodes sans sacrifier la clarté.

Cela signifie éviter toute complexité inutile.

Chaque classe ou fonction doit avoir une responsabilité claire et ciblée, adhérant au principe de responsabilité unique (SRP).

Trop de méthodes :


class User {
  constructor(name) {
    this.name = name;
  }

  getName() {
    return this.name;
  }

  setName(name) {
    this.name = name;
  }

  printWelcomeMessage() {
    console.log(`Welcome, ${this.name}!`);
  }

  // Additional unrelated methods
  getUserProfile() {
    // ... some logic
  }

  logActivity() {
    // ... some logic
  }
}


Copier après la connexion

Cette classe a trop de responsabilités. Il doit se concentrer uniquement sur la gestion du nom de l’utilisateur.

Refactorisé :


class User {
  constructor(name) {
    this.name = name;
  }

  getName() {
    return this.name;
  }

  setName(name) {
    this.name = name;
  }
}

class Logger {
  static logActivity(user) {
    // ... some logic
    console.log(`${user.getName()} performed an activity.`);
  }
}


Copier après la connexion

En séparant les préoccupations, le code devient plus simple et plus facile à maintenir.

Désormais, chaque classe a une seule responsabilité, adhérant aux principes du minimalisme et de la simplicité.


Conclusion

Les quatre règles de conception simple : réussir tous les tests, révéler l'intention, éliminer la duplication et minimiser le nombre de classes et de méthodes - guident la création d'un code propre, maintenable et émergent.

En suivant ces principes, la complexité est maîtrisée et votre code devient plus adaptable au changement.

Bon codage !

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 de ce site Web
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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Remplacer les caractères de chaîne en javascript Remplacer les caractères de chaîne en javascript Mar 11, 2025 am 12:07 AM

Remplacer les caractères de chaîne en javascript

jQuery Vérifiez si la date est valide jQuery Vérifiez si la date est valide Mar 01, 2025 am 08:51 AM

jQuery Vérifiez si la date est valide

jQuery obtient un rembourrage / marge d'élément jQuery obtient un rembourrage / marge d'élément Mar 01, 2025 am 08:53 AM

jQuery obtient un rembourrage / marge d'élément

10 onglets jQuery Accordion 10 onglets jQuery Accordion Mar 01, 2025 am 01:34 AM

10 onglets jQuery Accordion

10 vaut la peine de vérifier les plugins jQuery 10 vaut la peine de vérifier les plugins jQuery Mar 01, 2025 am 01:29 AM

10 vaut la peine de vérifier les plugins jQuery

Http débogage avec le nœud et le http-console Http débogage avec le nœud et le http-console Mar 01, 2025 am 01:37 AM

Http débogage avec le nœud et le http-console

jQuery Ajouter une barre de défilement à div jQuery Ajouter une barre de défilement à div Mar 01, 2025 am 01:30 AM

jQuery Ajouter une barre de défilement à div

Tutoriel de configuration de l'API de recherche Google personnalisé Tutoriel de configuration de l'API de recherche Google personnalisé Mar 04, 2025 am 01:06 AM

Tutoriel de configuration de l'API de recherche Google personnalisé

See all articles