OO编程基本功(2)--命名
1. 使用词组作为函数名称,名词作为类名称,描述性的词作为变量名
如果business使用了domain model,类名称通常为model的名称,就是我们domain model里面直接map过来的名称:
Customer
Student
Account
注意,如果出现了XxManager , XXExecutor , XXProcessor 之类的名称,那么要考虑修改design了,因为很可能已经follow过程式的编程思维。
方法名示例
在business 层,方法通常是model发生的动作:
PostPayment();
SubmitOrder();
SaveOrder();
变量名示例
通常,应该尽可能的精确表达出变量所代表的含义:
intelapsedTimeInDays;(而不是Elapseddays或者passedDays)
intdaysSinceCreation;(而不是days)
intdaysSinceModification;(而不是changedDays)
intfileAgeInDays; (而不是fileAge)
2. 不要使用容易引起误导的名字
例如Student[] StudentList 就不是一个好名称, 除非真的是List<Student> 类型,否则最好使用Students,这里可以选择StudentArray 或者Students都是不错的选择.
另外,最好避免使用o 和l,它们和数字1和0看上去非常相似。
3. 使参数的名称有意义
例如
public static void copyChars(char a1[],char a2[]) {
for (int i = 0; i < a1.length; i++) {
a2[i] = a1[i];
}
}
这里的a1和a2,如果不读逻辑,根本不知道代表的是什么,这里比较好的选择是使用source和destination ,使得参数的目的一目了然。
4. 避免缩写和简称
例如chatHistory 写成ch ,让人根本不知道ch代表了什么。任何名称,如果让人需要再mapping一次,就要考虑更换名称了。
5. 同一概念使用统一的词
别忘了,你在完成一个story,别人读代码的时候,就像读一本故事书,读一个类,就像阅读一篇文章,为了保证代码命名的一致性,例如用了Retrieve作为取操作的方法名 就别用Get , 用了Controller作为类名,就别用Manager。
6. 使用programmer 内部词汇作为后缀。
别忘了,所写的代码是给programmer来读,扩展的。因此我们可以使用一些内部词汇作为后缀来增强代码的可读性和类的流畅程度。例如算法相关的可以使用LazyQueue ,模式相关使用了SIMFactory ,AndriodProxy等等。
7. 使用表达统一概念的前缀
例如和地址信息相关的字段:FirstName, LastName, PostalCode , UnitNo , StreetName 等等,当他们一起出现时,我们也许能想到它们共同表达了概念--地址。可是它们单独出现时,FirstName 我们肯定无法猜到它是地址类的一个部分。因此我们可以使用AddrFirstName ,AddrLastName 等等来作为字段名,这样可以有效限制字段的意义就是在表达地址信息的一部分。
分享到:
相关推荐
SAP-ABAP-OO-实现-CL-SALV-TABLE
prototypal-oo-js-object-oriented-constructor-functions-lab-online-web-ft-110419-源码.rar
ruby-oo-fundamentals-attribute-accessors-lab-wdc01-seng-ft-060120-源码.rar
ruby-oo-fundamentals-attribute-accessors-lab-sea01-seng-ft-071320-master.rar
C_OO思想编程
资源分类:Python库 所属语言:Python 资源全名:oo_cli-0.0.5-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
1、Windows 95/98/Me系统,将oo2core_6_win64.dll复制到C:\Windows\System目录下。 2、Windows NT/2000系统,将oo2core_6_win64.dll复制到C:\WINNT\System32目录下。 3、Windows XP/WIN7/win10系统(64位系统对应...
2: main.imp.js: 一些基本的树生成实现(包括树形SELECT, 标准文件夹结构树[可折叠,可添加点击动作]) 3:test.html测试文件 main.Impl.js中的图片自己去找,图片文件名可以不一样,不要修改前面的NAMES BOTTOM:...
Advanced OO Methodology- 4Requirments.pdfAdvanced OO Methodology- 4Requirments.pdf
object oriented applications test case prioritization in software testing using genetic algorithm
dev-license-CD5L3-5K9OO-U7UXV-06HLC-9RQN.zip
#oo-basic-step-by-step
LCM1602的工程已经完全的调试成功,拿到手就可以用了,分享给大家。 若有疑问可以私心我,望大家多多关注!!!
oo-programming-java-part-II-Helsinki 赫尔辛基大学组织的 MOOC 第二部分习题解答
OO系统分析员之路--用例分析系列,共八篇文章,是从博客中截取的,感觉比较经典,与众网友分享。再次感谢作者!
转到OO 通过CLI进行HP OO操作先决条件HP OO 10.x Central已安装并正在运行去设置安装去获取-u -t -v github.com/dorsha/go2oo (或下载为.zip / .tar.gz) 进行构建(从根目录)用法go2oo.exe --help 显示已部署的...
依赖倒置原则的2个重要方针 1.高层模块不应该依赖于低层模块,二者都应该依赖于抽象 2.抽象不应该依赖于细节,细节应该依赖于抽象
ooop-2020-2021-semester-2
Diseno-oo-ejercicio3-mastermind separar-controladores 最终自己的目标,并保护一切权利,例如西班牙,西班牙,西班牙和西班牙。 利斯科夫国际独立法院最终。 La resumimosaquí。 Objetivo 取消预购权,取消...
对于UML有个大体的了解,但是如果想系统的学习那么大象去