ホームページ  >  記事  >  ウェブフロントエンド  >  クリーンなコードの黄金律: 関数は 1 つのことを実行する必要があります

クリーンなコードの黄金律: 関数は 1 つのことを実行する必要があります

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-07 18:19:31981ブラウズ

The Golden Rule of Clean Code: Functions Should Do One Thing

ソフトウェア エンジニアリングの世界では、他の原則よりも優先される原則が 1 つあります。それは、関数は 1 つのことを実行し、それを適切に実行する必要があります。この概念は単一責任原則 (SRP) と呼ばれることがあり、クリーンで保守可能なコードの基礎となります。

これがなぜ重要なのでしょうか?

関数が単一の責任を持つ場合:

  1. それらは理解しやすく、推論しやすくなります
  2. テストがよりシンプルになり、より集中的になります
  3. リファクタリングはリスクが少なく、より簡単です
  4. コードの再利用性が劇的に向上します
  5. デバッグの悩みが軽減されます

この原則の動作を説明する例を見てみましょう。

悪い習慣: 複数の責任を持つ機能

クライアントに電子メールを送信する次の関数について考えてみましょう。


function emailClients(clients) {
  clients.forEach(client => {
    const clientRecord = database.lookup(client);
    if (clientRecord.isActive()) {
      email(client);
    }
  });
}


この関数はいくつかのことを実行します:

  1. クライアントを反復処理する
  2. 各クライアントの記録を検索
  3. クライアントがアクティブかどうかを確認しています
  4. アクティブなクライアントにメールを送信する

これらすべてを 1 か所にまとめることは効率的であるように見えるかもしれませんが、機能の保守とテストが難しくなります。

グッドプラクティス: 単一責任機能

ここで、これをより小さな、焦点を絞った関数にリファクタリングしましょう:


function emailActiveClients(clients) {
  clients.filter(isActiveClient).forEach(email);
}

function isActiveClient(client) {
  const clientRecord = database.lookup(client);
  return clientRecord.isActive();
}


このリファクタリングされたバージョンでは:

  • emailActiveClients は、アクティブなクライアントに電子メールを送信するという高レベルのタスクに焦点を当てています
  • isActiveClient は、クライアントがアクティブかどうかの詳細を決定します

この関心の分離により、各関数の理解、テストが容易になり、コードベースの他の部分での再利用も可能になります。

このアプローチの利点

  1. 可読性: コードは明確なストーリーを伝えます。 emailActiveClients を読んでいる人は誰でも、実装の詳細に行き詰まることなく、その目的をすぐに理解できます。
  2. テスト容易性: 電子メール送信ロジックとクライアント アクティビティ チェックの個別のテストを簡単に作成できるようになりました。
  3. 柔軟性: アクティブなクライアントの決定方法を変更する必要がある場合は、isActiveClient 関数を変更するだけで済みます。
  4. 再利用性: isActiveClient 関数は、必要に応じてコードベースの他の場所で使用できるようになりました。

結論

「関数は 1 つのことを実行する必要がある」という原則を受け入れることは、最初は冗長に感じるかもしれませんが、コードベースの保守性とチームの生産性に対する長期的なメリットは計り知れません。コードを書いてリファクタリングするときは、常に「この関数は複数のことを実行しているか?」と自問してください。答えが「はい」の場合は、それを分解してみましょう!

クリーンなコードとは、単に物事を機能させるだけではなく、物事をエレガントかつ持続的に機能させることを意味します。コーディングを楽しんでください!

以上がクリーンなコードの黄金律: 関数は 1 つのことを実行する必要がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。