一定要! !
TL;DR:名稱不明確的函數隱藏了意圖並使讀者感到困惑。使用描述性的、面向行動的名稱。
問題
- 功能用途不明確
- 認知負荷增加
- 誤導性上下文
- 可讀性降低
- 艱難的合作
- 隱藏功能
解決方案
- 使用面向動作的動詞
- 使名稱具有描述性
- 反映函數的目的
- 避免通用術語
- 提供有意義的上下文
- 明確表達單一責任
- 將行動與結果相符
重構

重構 005 - 用函數名稱取代註解
馬克西·孔蒂耶里 ・22 年 6 月 7 日
情境
以通用術語命名的函數迫使讀者深入研究實作以理解其行為。
這會浪費時間並增加出錯的機會。
在使用獨立函數時,命名變得更加重要,因為類別名稱不提供額外的上下文。
這個問題直接關係到告訴,不要問的原則。
命令式名稱不會暴露迫使呼叫者推斷功能的模糊行為,而是傳達確切的操作,引導讀者無需檢查程式碼。
當您以描述性方式命名函數時,您可以消除不必要的猜測並符合此原則。
範例程式碼
錯誤的
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] 手冊
您可以透過檢查使用模糊術語的函數名稱來檢測這種氣味,例如do、run、process、loadload
等自動 linter 可以標記這些模式或反白顯示具有過於通用名稱的函數。
標籤
- 命名
等級
[X] 初學者
為什麼雙射很重要
函數名稱應該在其名稱和功能之間創建清晰的一一對應關係。
打破這種雙射會迫使開發人員檢查程式碼細節以了解上下文,從而減慢調試、審查和擴展速度。
人工智慧世代
人工智慧工具有時會在不了解您的領域的情況下產生通用函數名稱。
使用 AI 時,指定函數名稱必須具有描述性且面向操作。
人工智慧檢測
人工智慧模型可以透過將函數簽名與預先定義的命名最佳實踐進行比較來幫助檢測不明確的名稱。
將人工智慧與手動程式碼審查結合會產生最佳結果。
嘗試一下!
記住:人工智慧助理會犯很多錯誤
Without Proper Instructions | With Specific Instructions |
---|---|
ChatGPT | ChatGPT |
Claude | Claude |
Perplexity | Perplexity |
Copilot | Copilot |
Gemini | Gemini |
結論
函數名稱不僅僅是標籤;它們是與讀者的合約。
不明確的名稱會破壞此契約並導致混亂。
描述性的、以操作為導向的名稱簡化了溝通,並使您的程式碼更易於維護和擴展。
關係

代碼氣味 33 - 縮寫
馬克西·孔蒂耶里 ・ 十一月 24 '20

代碼氣味 153 - 名字太長
馬克西·孔蒂耶里 ・ 2022 年 7 月 29 日

程式碼氣味 38 - 抽象名稱
馬克西·孔蒂耶里 ・ 2020 年 11 月 30 日

代碼氣味 174 - 屬性中的類別名稱
馬克西·孔蒂耶里 ・22 年 10 月 29 日
參見

名字到底是什麼? — 第一部:探索
馬克西·孔蒂耶里 ・ 21 年 2 月 9 日

名字到底是什麼 - 第二部復健
馬克西·孔蒂耶里 ・21 年 5 月 23 日
免責聲明
程式碼味道是我的觀點。
製作人員
照片由 unsplash 上的 britishlibrary 拍攝
函數名稱應該是動詞或動詞片語,需要是
有意義
羅伯特·C·馬丁

軟體工程精彩名言
馬克西·孔蒂耶里 ・ 2020 年 12 月 28 日
本文是 CodeSmell 系列的一部分。

如何找出程式碼中的臭部分
馬克西·孔蒂耶里 ・ 21 年 5 月 21 日
以上是程式碼異味 - 非命令式函數名稱的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器