クリーンコードの理解: 出現 ⚡️

Patricia Arquette
リリース: 2024-10-07 14:21:30
オリジナル
838 人が閲覧しました

Understanding Clean Code: Emergence ⚡️

クリーン コードの第 12 章「創発」では、基本的な設計原則を遵守することで、クリーンで適切に構造化されたソフトウェアがどのように誕生するかについて説明します。

ソフトウェア設計における創発とは、単純でよく理解されたルールから複雑な動作や機能が生まれるプロセスを指します。

これらのルールに従うことは、開発者が保守、拡張、理解が容易なソフトウェアを作成するのに役立ちます。


この章では、シンプルな設計の 4 つのルールに焦点を当て、クリーンで効率的なコードのためのシンプルさとテスト容易性を強調します。


?シンプルデザインの4つのルール

  • すべてのテストに合格します
  • 意図を明らかにします
  • 重複はありません
  • クラスとメソッドの数を最小限に抑えます

これらのルールをそれぞれ分解して、JavaScript を使用してどのように適用されるかを見てみましょう。


1. すべてのテストに合格

クリーンな新興ソフトウェアの基礎は、それが機能することです。

すべてのコードはテストに合格し、期待される動作が維持され、新しい機能によってバグが発生しないことを確認する必要があります。

JavaScript では、これは多くの場合、Jest や Mocha などのライブラリを使用して単体テストを作成することで実現されます。


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

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


ログイン後にコピー

ソフトウェアがすべてのテストに合格することを確認することで、システムが意図したとおりに動作することが保証されます。

クリーンなコードは信頼性の高いテストから始まります。これがなければ、他のルールはどれも意味がありません。


2. 意図を明らかにする

コードは、それが何を行うのかを伝える必要があります。適切な名前の関数、変数、クラスを使用すると、コメントを必要とせずにコードが読みやすく、理解しやすくなります。

その意図を明らかにするコードは一目瞭然です。

不適切なネーミング:


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


ログイン後にコピー

良いネーミング:


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


ログイン後にコピー

この場合、doubleNumber() は関数の意図を明確に示しています。

このコードを読んだ人は誰でも、追加の説明なしでその目的をすぐに理解できます。

これにより、混乱が軽減されるだけでなく、保守性も向上します。


3. 重複禁止

コードの重複は、クリーンなソフトウェアの最大の敵の 1 つです。ロジックを繰り返すと、バグが発生し、メンテナンスの労力が増加する可能性があります。

目標は、一般的な動作を再利用可能な関数またはモジュールに抽象化することで冗長性を削減することです。

コードの重複:


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

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


ログイン後にコピー

どちらの関数も同様の計算を行っています。リファクタリングを行うことで重複を排除できます。

重複なし:


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


ログイン後にコピー

関数を一般化することで、ロジックの繰り返しを排除し、コードの保守性を高めます。


4. クラスとメソッドの数を最小限に抑える

シンプルな設計の最後のルールは、明確さを犠牲にすることなくクラスとメソッドの数を最小限に抑えることを奨励します。

これは、不必要な複雑さを避けることを意味します。

各クラスまたは機能は、単一責任原則 (SRP) を遵守し、明確で焦点を絞った責任を負う必要があります。

メソッドが多すぎます:


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
  }
}


ログイン後にコピー

このクラスには責任が多すぎます。ユーザー名の管理のみに重点を置く必要があります。

リファクタリング済み:


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.`);
  }
}


ログイン後にコピー

関心事を分離することで、コードがよりシンプルになり、保守が容易になります。

各クラスは、ミニマリズムとシンプルさの原則を遵守し、単一の責任を負います。


結論

シンプルな設計の 4 つのルール (すべてのテストに合格する、意図を明らかにする、重複を排除する、クラスとメソッドの数を最小限に抑える) は、クリーンで保守可能で創発的なコードの作成に役立ちます。

これらの原則に従うことで、複雑さが抑制され、コードの変更への適応性が高まります。

コーディングを楽しんでください!

以上がクリーンコードの理解: 出現 ⚡️の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!