絶対的にそう!!
TL;DR: 関数名が不明瞭だと、意図がわからなくなり、読者が混乱してしまいます。説明的で、アクション指向の名前を使用してください。
https://hackernoon.com/improving-the-code-one-line-at-a-time
一般的な用語で名前が付けられた関数の場合、読者は関数の動作を理解するために実装の詳細を調べる必要があります。
これにより、時間が無駄になり、エラーが発生する可能性が高まります。
クラス名が追加のコンテキストを提供しないスタンドアロン関数を扱う場合、命名はさらに重要になります。
この問題は、「聞くのではなく、伝える」原則に直接関係しています。
呼び出し元に機能を推測させる曖昧な動作を公開する代わりに、命令型の名前は正確なアクションを伝え、コードを調べることなく読者を導きます。
関数に説明的な名前を付けると、不必要な推測がなくなり、この原則に準拠することになります。
public String dateFormatting(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void load() { System.out.println("Loading..."); }
public String formatDate(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void loadUserPreferences() { System.out.println("Loading user preferences..."); }
この臭いは、 do 、 run 、 process 、 loadなどのあいまいな用語を使用している関数名を確認することで検出できます。
自動化されたリンターは、これらのパターンにフラグを立てたり、過度に一般的な名前を持つ関数を強調表示したりできます。
関数名は、その名前と機能の間に明確な1 対 1 の対応を作成する必要があります。
このバイジェクションを破ると、開発者はコンテキストのためにコードの詳細を調べる必要があり、デバッグ、レビュー、拡張が遅くなります。
AI ツールは、ドメインを理解せずに一般的な関数名を生成することがあります。
AI を使用する場合は、関数名が説明的でアクション指向である必要があることを指定します。
AI モデルは、関数シグネチャを事前定義された命名ベストプラクティスと比較することで、あいまいな名前を検出するのに役立ちます。
AI と手動のコードレビューを組み合わせると、最良の結果が得られます。
覚えておいてください:AIアシスタントは多くの間違いを犯します
適切な指示がなければ | 具体的な指示 |
---|---|
関数名は単なるラベルではなく、読者との契約です。
曖昧な名前はこの契約を破り、混乱を招きます。
説明的でアクション指向の名前はコミュニケーションを簡素化し、コードの保守と拡張を容易にします。
コードスメルは私の意見です。
Unsplashのbritishlibraryによる写真
関数名は動詞または動詞句で、意味のあるものにする必要があります。
ロバート・C・マーティン
この記事は CodeSmell シリーズの一部です。