ホームページ >ウェブフロントエンド >jsチュートリアル >クリーンなコード: 関数パラメータのブール値フラグがコードの臭いである理由

クリーンなコード: 関数パラメータのブール値フラグがコードの臭いである理由

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-12 18:56:17388ブラウズ

Clean code: why boolean flags in function parameters are a code smell

関数パラメーター内のブール フラグにより​​、コードの読み取りと保守が困難になる可能性があります。それらを避けるべき理由と、代わりに何ができるかを見てみましょう。

ブールフラグの問題

ブール値パラメーターを使用すると、多くの場合、関数が 2 つの異なることを実行し、単一責任原則 (SRP) に違反することになります。典型的な例を次に示します:

function createFile(name, isTemp) {
  if (isTemp) {
    fs.create(`./temp/${name}`);
  } else {
    fs.create(name);
  }
}

これは単純に見えるかもしれませんが、いくつかの問題があります:

  1. 不明瞭な関数呼び出し: コードを読むと、ブール値が何を意味するのかを知るのは困難です。
   createFile("log.txt", true);  // What does 'true' mean here?
  1. 2 つの関数を 1 つにまとめた: ブール値はスイッチのように機能し、関数に異なる動作をさせます

  2. テストは難しくなります: 関数が動作する両方の方法をチェックする必要があります

  3. 機能を追加するのが難しい: 後で 3 番目のオプションが必要になった場合、別のブール値を追加すると、事態が悪化する可能性があります

もっと良い書き方

関数を 2 つの別個の関数に分割し、それぞれが 1 つのことを実行します。

function createFile(name) {
  fs.create(name);
}

function createTempFile(name) {
  createFile(`./temp/${name}`);
}

これにより次のことが得られます:

  1. 明確な名前: createTempFile("log.txt") は、その内容を正確に示します

  2. 単純なロジック: 各関数は 1 つのことだけを行います

  3. 簡単なテスト: 関数ごとにテストする必要があるのは 1 つだけです

  4. 機能の追加が簡単: 新しいものが必要ですか?古い関数を変更せずに新しい関数を追加します

他の例

このアイデアは多くの状況で機能します。いくつかのケースを次に示します:

ログインシステム

// ❌ Bad
function authenticate(user, isAdmin) {
  if (isAdmin) {
    // Admin login logic
  } else {
    // Regular user login logic
  }
}

// ✅ Good 
function authenticateUser(user) {
  // Regular user login logic
}

function authenticateAdmin(user) {
  // Admin login logic
}

メールシステム

// ❌ Bad
function sendEmail(user, isHtmlFormat) {
  if (isHtmlFormat) {
    // Send HTML email
  } else {
    // Send plain text email
  }
}

// ✅ Good
function sendPlainTextEmail(user) {
  // Send plain text email
}

function sendHtmlEmail(user) {
  // Send HTML email
}

総括する

関数パラメーター内のブール フラグは、関数が過剰な処理を実行しようとしていることを示していることがよくあります。個別の焦点を絞った関数を作成すると、次のようなコードが作成されます。

  • 読みやすい
  • テストが簡単
  • 修正は簡単
  • 簡単に変更できます

次回ブール型パラメータを追加する場合は、代わりに 2 つの関数を作成することを検討してください。


コード内でこのような関数を分割してみましたか?役に立ちましたか?コメント欄でお知らせください!

以上がクリーンなコード: 関数パラメータのブール値フラグがコードの臭いである理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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