一定要!!
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、load 等
自动 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)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

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汉化版
中文版,非常好用

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。