选择一个正确的名字是编程中最重要的事。以前酷壳向大家推荐过两篇文章《编程命名中的7+1个提示
》 和《编程中的命名设计那点事
》,今
天再向大家推荐一篇。一个正确的命名可以让你更容易地理解代码的程序,好的命名可以消除二义性,消除误解,并且说明真实的意图,甚至可以让你有清新的气息
以让你更能吸引异性。;-)
方法,类和变量
正确的名字可以让你的程序顾名思义,下面是一些提示:
-
不要使用”ProcessData()
“这
样的命名
你如果在你的程序生涯中使用这样的函数名,那么这意味着你将是一个不合格的程序员而会被淘汰或解雇。请明确实际的功能
。
比如:ValidateUserLogin(验证用户登录)
或 EliminateDuplicateRequests(去
除重复请求)
或 ComputeAverageAge(计算平均年龄),等等。
-
让命名来帮你设计程序
让我们假装有这么一条规则是——“任何的函数是有输入/输出的”,那么,你需要思考的是所有的把input变成ouptut的步骤,然后,你可以选择一个
简短的句了来说明你的这段程序,然后,把这个短句再精练一下,最终成为你的函数名,而那个短句则成了你程序的结构。
-
命令不应该是模糊的
如果你有一个类名叫:FilterCriteria
,但实际上其可用于文件过滤,那么这个类应该叫做: FileFilterCriteria
,就算是你真要想要用
FilterCriteria,那它也应该是抽象类。
-
避免过多的工作
这只是一个风格上的事情,但还是需要注意一下。在上面,我们使用到了 ValidateUserLogin
和 EliminateDuplicateRequests
两个名字,这两个命令看上去需要做很多比较复杂的事。所以,让你的名字变简单一些也有利于你的程序更容易阅读和维护。一个软件本来就是由不同的模块拼成,
而一个模块又是由更细小的函数和类拼成。编程中,我们都知道,一个函数的尺寸应该控制在200行以内,一个类的接口应该控制在20个以内。所以,从其名字
上我们就不要让一个名字取得太大了。
-
避免类名以 ”Manager” 结尾
这样会让你类变成一个黑盒子,当然,有一些程序员喜欢使用这样的名字让那个类看起来好像更强大一些,但其实这样并不好。一般来说使用Manager这个字
眼通常是使用工厂模式,或是一个容器,所以,对于一些最基本的算法或是数据结构的封装,最好是在其名字上体现这一算法或数据结构的名字,如: SortedList
和ConnectionPool
。
-
为你的枚举类型使用单数名字
一个枚举类型会列出所有可能的值,所以,叫animalType
会比 animalTypes
要好。
-
匈牙利命名应该更多的关注名字的含义而不是类型
匈
牙利命名
是一个以前很流行的命名方法,其给出了一整套的方法告诉你如何标记你的变量的类型,但可惜的是很多程序员过多的关注了变量了类型,而不是
变量名的含义。而变量名的含义才是根本。
-
不要让名字隐藏了内在
比如,我们有段代码需要处理用户的输入,把其转成UTF-8码,然后标准化(比如一些协议),最后再处理相应的转义字符。千万不要把这函数命名为Escape()
,因为你需要调用 ToUTF8()
以及NormalizeEntities()
最后才是 Escape()
函数。如果你希望使用一个函数名来做这三件事,那么,你宁可使用一个模糊的名字再加上充分的注释,而不是一个确切的名字。模糊的名字会让别人在阅读时想进
去看看,而确切的名字则会让别人在阅读代码时忽略细节(这看起来和第一点有点矛盾,其实也是为了程序的易读)。比如:ProcessUserInput()
-
一致性, 一致性
, 一致性
强调文章和代码的一致性,就算是文档写得再详细,我们也要去读代码,所以文档主要是体现思路和反映需求和设计。在程序上,我们的命令应当和文档中的术语保
持一致,而程序中的命名也应该是用和文档相同的风格,这样,我们可以少很多理解上的成本。
-
不要害怕改名
有一些时候,你会觉得某具名字不合适,你需要改动一下。但你马上发现要改这个名字,需要修改很多的程序代码。在这里有一个原则,如果你
的这个名字不是以API的方式发布时,那么你就应该不要害怕更改名字,就算是修改的工作量并不小,为了日后的更容易的阅读和维护,这是值得的。但是,如果
这是一个API的名字,那我还是建议你不要改了,就算是你觉得这个名字烂得很。因为,当你的程序以API的形式发布后,会有N多的他人的程序依赖于这个名
字,这个时候,兼容性和用户比什么都重要。
Frameworks 和 Libraries
你的用户是一个程序员,他需要使用你的代码进行二次开发。 Namespaces 将会是你重点需要注意的东西。
-
使用namespaces 而不是类的前缀
希望你的编程序语言支持namespace,这样,你就可以使用它而不是在类名前面加前缀了。如果你所使用的语言不支持namespace,那么你应该上
网看看其它程序员使用什么样的方式来区分自己的代码和别人的代码名字空间。
-
使用普通的namespace而不是使用公司名
使用公司名做namespace并不是一个好的相法,因为公司名很容易变更,比如,公司因为被收购,被控告,合并,重组等原因需要更名。产品的名字同样也
会改变。所以,使用一个普通的namespaces会好一些。如STL,ACE等。
数据库
Database Schemas 意为数据模型,所以,其名字应该和其领域是合乎逻辑的,而不是为了编程的方便。
-
数据表应使用复数
别使用单数形式,这是因为在远古的ORM 中需要使用单数的形式来定义类名。而且,一个表中包含了许多行数据,所以也应该是复数的。如,”items
“, “customers
“, “journalEntries
”
等等。,
-
为那些包括派生数据或是日常处理的表使用aux_ 和meta_ 前缀
这些表中的数据都是用来做为临时处理的,所以,你需要一个前缀或是后缀来使他们区别于实际的表。
-
为主键加入表名
如果你有一张表叫 ”driverLicenses
”
而ID 列是主键,那么你应该把这个主键命名为”driverLicense_id
”
而不是”id”。这样做的好处是,当你在连接两个表的时候,你不需要为主键指定表名,如: “driverLicense.id
” 或”vehicle.id
“,也不需要为其取
别名。
-
使用后缀来标识类
这样的例子很多,比如:ISBN 和Dewey Decimal numbers,VIN等等.
Joe Celko有一篇文章叫 SQL
Programming Style
提到了下面这样的风格:
_id
主键
_nbr
字符串型的数位(有严格的规则,如:车牌号,身份证号,手机号等)
_code
标准化编码(如:邮编,ISO 国家编码)
_cat
种类名
_class
子集
_type
稍不正式的类名,比如,驾照中的,”摩托车”, “汽车”, and “出租车” 类型。
其它
-
对于“物理上”的东西,命名其是什么,而不是做什么
比如某些物理上的名字,姓名,性别,文件路径,网络链接,文件描述符,下标索引,类的属性,这些都是物理上的东西,所以,其名字应该是标识其是什么,而不
是用来做什么。
-
对于“逻辑上”的东西,命名其做什么,而不是是什么
比如某些逻辑上的名字,函数名,数据结构,等。
-
避免”Category” 问题
千万别使用”Category” 作为你的属性名,因为,你会马上发现,这并不靠谱,因为这就等于什么没有说。与此相类似的还有”type”
,”kind” ,”variant” ,”classification” ,”subcategory”
等,对于这些名字,没人知道其是什么东西。而应该使用更为明确的分类,如: “FuelEfficiencyGrade”,
“PackagingType”, “AgeGroup”, “Flamability”, “AllergenLevel”, 等等。
分享到:
相关推荐
微信小程序是一种轻量级的应用开发平台,主要针对...通过以上知识点的运用,我们可以构建一个高效、可复用的提示组件,提高微信小程序的用户体验。对于开发者来说,理解和掌握这些核心概念是提升小程序开发能力的关键。
授权提示是微信小程序中一个关键的交互环节,它涉及到用户隐私保护和用户体验的优化。 在微信小程序中,如果需要获取用户的个人信息,如昵称、头像等,必须先获得用户的授权。这是因为微信小程序遵循严格的数据安全...
在开发微信小程序的过程中,代码提示插件扮演着重要的角色,它能提高开发效率,减少错误,使得编码过程更加流畅。本文将深入探讨微信小程序代码提示插件的相关知识点。 1. **代码提示插件的作用** 代码提示插件,...
Java SE程序 弹出提示框Java SE程序 弹出提示框Java SE程序 弹出提示框Java SE程序 弹出提示框Java SE程序 弹出提示框Java SE程序 弹出提示框Java SE程序 弹出提示框Java SE程序 弹出提示框Java SE程序 弹出提示框...
为了让用户知道可以将小程序添加到“我的小程序”,我们可以利用微信提供的API和UI组件来实现提示功能。例如,可以监听`onShow`生命周期函数,当用户首次打开或从后台切回时触发,检查是否已将小程序添加到“我的小...
下面我们将深入探讨如何在VC++程序中实现启动提示,并提供一些优化提示功能的建议。 首先,要在VC++程序中添加启动提示,你需要了解以下知识点: 1. **主函数(Main Function)**:所有C++程序的执行始于主函数,...
微信小程序开发中toast也是重要的消息提示方式. 提示框: wx.showToast(OBJECT) 显示消息提示框 OBJECT参数说明: 示例代码: wx.showToast({ title: '成功', icon: 'success', duration: 2000 }) wx....
联想工程师专用小工具 开机提示svchost.exe应用程序错误修复工具V2.30.1联想工程师专用小工具 开机提示svchost.exe应用程序错误修复工具V2.30.1联想工程师专用小工具 开机提示svchost.exe应用程序错误修复工具V...
微信小程序-ToolTip信息提示组件导入将ToolTip文件夹复制到pages文件夹内使用在需要使用ToolTip的页面对应的.wxml文件中添加: src="../ToolTip/toolTip.wxml"/> <!-- 引入toolTip模板 --> is=...
标题 "语音提示程序源码" 涉及到的是一个基于VB6.0(Visual Basic 6.0)开发的应用程序,它具有语音提示功能,特别适用于医疗环境中的新医嘱提示。VB6.0是微软公司推出的一种可视化编程工具,主要用于开发Windows...
本程序的核心功能是设置一个特定的时间点,然后从这个时间点开始倒数,每当到达预设的时间点时,会提供语音或文字提示。下面我们将深入探讨倒计时程序的设计原理、实现方式以及与之相关的技术点。 1. 设计原理: 倒...
在C#编程中,"退出程序提示"是一个常见的需求,特别是在设计用户交互界面时,我们需要确保用户在退出程序前能够得到适当的确认或者处理未保存的数据。以下是对这一主题的详细探讨: 1. **退出程序的基本方式** C#...
当用户鼠标悬停在托盘图标上时,程序可以弹出一个小型窗口,显示一些信息,这种现象称为“冒泡提示”。 在PowerBuilder中,实现托盘图标和冒泡提示功能,主要涉及到以下几个步骤: 1. **创建托盘图标对象**:首先...
在使用谷歌浏览器(Chrome)的过程中,用户可能会遇到一个警告提示:“请停用以开发者模式运行的扩展程序”。这个提示通常是由于安装了非官方市场(如Chrome Web Store)的扩展程序或者是以开发者模式加载的插件导致...
Oracle 未找到提供程序是指在使用 ADO 连接 Oracle 数据库时,出现“未找到提供程序,该程序可能未正确安装”的错误提示。这种错误通常是由于 Oracle 安装目录下的 BIN 目录中的 OraOLEDB11.dll 文件未正确注册引起...
在这个场景下,我们关注的是“微信小程序wepy框架消息提示插件”,这是一款专为提升用户体验而设计的工具。 Wepy是腾讯推出的一个开源的微信小程序开发框架,它借鉴了Vue.js的设计思想,旨在简化微信小程序的开发...
在微信小程序中,为了提升用户体验并增加用户粘性,通常会采用一些引导策略来帮助用户更好地理解和使用小程序。本项目是关于利用uni-app框架实现微信小程序中的一个特定引导组件——“添加到我的小程序”。 uni-app...
自己编写的关机提示程序,在定时任务中新建一个任务,设定自动关机时间,就可以实现自动关机,带提示是否确认的。 适用于办公室电脑下班后自动关机脚本,如果有员工加班,即安否就可以取消关机。可在定时任务设定几...
标题中的“自编开机启动提示语程序”是一个用户自行编写的小型应用程序,它的主要功能是在计算机启动时自动播放预设的语音提示,并且允许用户通过双击程序来更改这些提示语音。这个程序的设计目的是为了提供一种个性...
= 当前版本:提示有更新版本,下载c.exe 更新程序,打开c.exe,关闭当前程序; c.exe 运行,提示更新信息,确定后更新操作 删除原来程序(上一个版本程序 a.exe),下载新版本程序a.exe(老版本以删除,可以直接下载...