ホームページ > ウェブフロントエンド > jsチュートリアル > コードの匂い - 非命令的関数名

コードの匂い - 非命令的関数名

DDD
リリース: 2025-01-10 09:49:41
オリジナル
776 人が閲覧しました

必ず実行してください!!

TL;DR: 不明瞭な名前の関数は意図を隠し、読者を混乱させます。説明的でアクション指向の名前を使用します。

問題点

  • 関数の目的が不明瞭
  • 認知負荷の増加
  • 誤解を招く文脈
  • 可読性の低下
  • 難しいコラボレーション
  • 隠れた機能

ソリューション

  1. 動作指向の動詞を使用する
  2. わかりやすい名前にします
  3. 関数の目的を反映する
  4. 一般的な用語は避ける
  5. 意味のあるコンテキストを提供する
  6. 単一の責任を明確に表現する
  7. 行動と結果を一致させる

リファクタリング

Code Smell  - Non-Imperative Functions Names

リファクタリング 005 - コメントを関数名に置き換える

Maxi Contieri ・ 2022年6月7日

#javascript #初心者 #リファクタリング #プログラミング

コンテクスト

一般的な用語で名前が付けられた関数を使用すると、読者はその動作を理解するために実装に飛び込む必要があります。

これは時間を無駄にし、エラーの可能性を高めます。

スタンドアロン関数を使用する場合、クラス名が追加のコンテキストを提供しないため、名前付けはさらに重要になります。

この問題は、Tell, Don’t Ask 原則に直接関係しています。

呼び出し元に機能の推論を強制するあいまいな動作を公開する代わりに、命令名は正確なアクションを伝え、コードを検査することなく読者をガイドします。

関数にわかりやすい名前を付けると、不必要な推測が排除され、この原則に沿ったものになります。

サンプルコード

間違っている

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...");
}
ログイン後にコピー

検出

[X] マニュアル

この臭いは、dorunprocessload などのあいまいな用語が使用されている関数名を確認することで検出できます。 .

自動化されたリンターは、これらのパターンにフラグを立てたり、過度に一般的な名前の関数を強調表示したりできます。

タグ

  • 命名

レベル

[X] 初心者

全単射が重要な理由

関数名は、その名前と機能の間に明確な 1 対 1 の対応関係を作成する必要があります。

この Bijection を破ると、開発者はコードの詳細を調べてコンテキストを確認する必要が生じ、デバッグ、レビュー、拡張機能が遅くなります。

AIの生成

AI ツールは、ドメインを理解せずに汎用関数名を生成することがあります。

AI を使用する場合は、関数名が説明的でアクション指向である必要があることを指定します。

AI検出

AI モデルは、関数のシグネチャを事前定義された名前付けのベスト プラクティスと比較することで、あいまいな名前の検出に役立ちます。

AI と手動のコード レビューを組み合わせることで、最良の結果が得られます。

試してみてください!

覚えておいてください: AI アシスタントは多くの間違いを犯します

Without Proper Instructions With Specific Instructions
ChatGPT ChatGPT
Claude Claude
Perplexity Perplexity
Copilot Copilot
Gemini Gemini

結論

関数名は単なるラベルではありません。それらは読者との契約です。

あいまいな名前はこの契約を破り、混乱を引き起こします。

説明的でアクション指向の名前を使用すると、コミュニケーションが簡素化され、コードの保守と拡張が容易になります。

関係

Code Smell  - Non-Imperative Functions Names

コード スメル 33 - 略語

マキシ・コンティエリ ・ 2020年11月24日

#おっと #コード初心者 #プログラミング #チュートリアル
Code Smell  - Non-Imperative Functions Names

コードの匂い 153 - 長すぎる名前

Maxi Contieri ・ 2022 年 7 月 29 日

#javascript #webdev #初心者 #プログラミング
Code Smell  - Non-Imperative Functions Names

コードの匂い 38 - 抽象的な名前

マキシ・コンティエリ ・ 2020年11月30日

#おっと #コード初心者 #ネーミング #webdev
Code Smell  - Non-Imperative Functions Names

コード スメル 174 - 属性のクラス名

マキシ・コンティエリ ・ 2022年10月29日

#javascript #webdev #初心者 #プログラミング

こちらも参照

Code Smell  - Non-Imperative Functions Names

名前とは正確には何ですか? — パート I: クエスト

Maxi Contieri ・ 2021年2月9日

#コード初心者 #チュートリアル #webdev #おっと
Code Smell  - Non-Imperative Functions Names

名前とは正確には何ですか - パート II リハビリ

Maxi Contieri ・ 2021 年 5 月 23 日

#チュートリアル #コード初心者 #プログラミング #webdev

免責事項

コードの匂いは私の意見です。

クレジット

Unsplash の英国図書館による写真


関数名は動詞または動詞句である必要があり、
意味のある

ロバート・C・マーティン

Code Smell  - Non-Imperative Functions Names

ソフトウェア エンジニアリングの素晴らしい名言

Maxi Contieri ・ 2020年12月28日

#コード初心者 #プログラミング #引用符 #ソフトウェア

この記事は CodeSmell シリーズの一部です。

Code Smell  - Non-Imperative Functions Names

コードの怪しい部分を見つける方法

マキシ・コンティエリ ・ 2021年5月21日

#コード初心者 #チュートリアル #コード品質 #初心者

以上がコードの匂い - 非命令的関数名の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート