ホームページ >ウェブフロントエンド >jsチュートリアル >クリーンなコード: 関数パラメータのブール値フラグがコードの臭いである理由
関数パラメーター内のブール フラグにより、コードの読み取りと保守が困難になる可能性があります。それらを避けるべき理由と、代わりに何ができるかを見てみましょう。
ブール値パラメーターを使用すると、多くの場合、関数が 2 つの異なることを実行し、単一責任原則 (SRP) に違反することになります。典型的な例を次に示します:
function createFile(name, isTemp) { if (isTemp) { fs.create(`./temp/${name}`); } else { fs.create(name); } }
これは単純に見えるかもしれませんが、いくつかの問題があります:
createFile("log.txt", true); // What does 'true' mean here?
2 つの関数を 1 つにまとめた: ブール値はスイッチのように機能し、関数に異なる動作をさせます
テストは難しくなります: 関数が動作する両方の方法をチェックする必要があります
機能を追加するのが難しい: 後で 3 番目のオプションが必要になった場合、別のブール値を追加すると、事態が悪化する可能性があります
関数を 2 つの別個の関数に分割し、それぞれが 1 つのことを実行します。
function createFile(name) { fs.create(name); } function createTempFile(name) { createFile(`./temp/${name}`); }
これにより次のことが得られます:
明確な名前: createTempFile("log.txt") は、その内容を正確に示します
単純なロジック: 各関数は 1 つのことだけを行います
簡単なテスト: 関数ごとにテストする必要があるのは 1 つだけです
機能の追加が簡単: 新しいものが必要ですか?古い関数を変更せずに新しい関数を追加します
このアイデアは多くの状況で機能します。いくつかのケースを次に示します:
// ❌ 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 サイトの他の関連記事を参照してください。