首頁 > web前端 > 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 - 用函數名稱取代註解

馬克西·孔蒂耶里 ・22 年 6 月 7 日

#javascript #初學者 #重構 #程式設計

情境

以通用術語命名的函數迫使讀者深入研究實作以理解其行為。

這會浪費時間並增加出錯的機會。

在使用獨立函數時,命名變得更加重要,因為類別名稱不提供額外的上下文。

這個問題直接關係到告訴,不要問的原則

命令式名稱不會暴露迫使呼叫者推斷功能的模糊行為,而是傳達確切的操作,引導讀者無需檢查程式碼。

當您以描述性方式命名函數時,您可以消除不必要的猜測並符合此原則。

範例程式碼

錯誤的

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] 手冊

您可以透過檢查使用模糊術語的函數名稱來檢測這種氣味,例如dorunprocessloadload

自動 linter 可以標記這些模式或反白顯示具有過於通用名稱的函數。

標籤
  • 命名

等級

[X] 初學者

為什麼雙射很重要

函數名稱應該在其名稱和功能之間創建清晰的一一對應關係。

打破這種雙射會迫使開發人員檢查程式碼細節以了解上下文,從而減慢調試、審查和擴展速度。

人工智慧世代

人工智慧工具有時會在不了解您的領域的情況下產生通用函數名稱。

使用 AI 時,指定函數名稱必須具有描述性且面向操作。

人工智慧檢測

人工智慧模型可以透過將函數簽名與預先定義的命名最佳實踐進行比較來幫助檢測不明確的名稱。

將人工智慧與手動程式碼審查結合會產生最佳結果。

嘗試一下!

記住:人工智慧助理會犯很多錯誤

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

結論

函數名稱不僅僅是標籤;它們是與讀者的合約。

不明確的名稱會破壞此契約並導致混亂。

描述性的、以操作為導向的名稱簡化了溝通,並使您的程式碼更易於維護和擴展。

關係

Code Smell  - Non-Imperative Functions Names

代碼氣味 33 - 縮寫

馬克西·孔蒂耶里 ・ 十一月 24 '20

#哎呀 #codenewbie #程式設計 #教程
Code Smell  - Non-Imperative Functions Names

代碼氣味 153 - 名字太長

馬克西·孔蒂耶里 ・ 2022 年 7 月 29 日

#javascript #webdev #初學者 #程式設計
Code Smell  - Non-Imperative Functions Names

程式碼氣味 38 - 抽象名稱

馬克西·孔蒂耶里 ・ 2020 年 11 月 30 日

#哎呀 #codenewbie #命名 #webdev
Code Smell  - Non-Imperative Functions Names

代碼氣味 174 - 屬性中的類別名稱

馬克西·孔蒂耶里 ・22 年 10 月 29 日

#javascript #webdev #初學者 #程式設計

參見

Code Smell  - Non-Imperative Functions Names

名字到底是什麼? — 第一部:探索

馬克西·孔蒂耶里 ・ 21 年 2 月 9 日

#codenewbie #教程 #webdev #哎呀
Code Smell  - Non-Imperative Functions Names

名字到底是什麼 - 第二部復健

馬克西·孔蒂耶里 ・21 年 5 月 23 日

#教程 #codenewbie #程式設計 #webdev

免責聲明

程式碼味道是我的觀點。

製作人員

照片由 unsplash 上的 britishlibrary 拍攝


函數名稱應該是動詞或動詞片語,需要是
有意義

羅伯特·C·馬丁

Code Smell  - Non-Imperative Functions Names

軟體工程精彩名言

馬克西·孔蒂耶里 ・ 2020 年 12 月 28 日

#codenewbie #程式設計 #引號 #軟體

本文是 CodeSmell 系列的一部分。

Code Smell  - Non-Imperative Functions Names

如何找出程式碼中的臭部分

馬克西·孔蒂耶里 ・ 21 年 5 月 21 日

#codenewbie #教程 #程式碼品質 #初學者

以上是程式碼異味 - 非命令式函數名稱的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板