`
softstone
  • 浏览: 462518 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于命名规范的一些建议

阅读更多


类命名
Kent Beck 提出其中大多数的规则。Kent Beck 的《Smalltalk Best Practice Pattern》是我
至今为止读过的所有书里面最符合我审美观点的书籍—渊博的知识和春秋的笔法。


简单超类名—传达设计目的
命名总要受各种因素的影响。你想把名字取得尽量短,易于输入、格式化、容易说出口。
同时,你也想让名字尽可能包含更多的信息,这样读者就能够更快地理解名字所包含的实际
内容。你可能取一些尽量为人所熟悉的名字,这样在名字中就可以传递更多的共同经验。同
时,你也想让名字尽量唯一,别人的代码命名就不会和你重复。
Kent Beck 给出的第一个规则就是不要缩写。缩写对输入(20 年内10-100 次)的考虑
多余对理解(20 年内1000-10000 次)的考虑。理解缩写词需要两步,第一步理解这些缩写
代表的词语,第二步采取理解这些词语所代表的意义。
对一个大层次的根类命名是一个重大的决策。在未来的20 年中,人们可能不断地使用
你所给出的名字。你必须不犯错误。
人们通常在命名超类时加上各种各样的修饰,富有计算机科学意义、给人深刻印象但最
终却没有意义的单词,如Object,Thing,Component,Part,Manager,Entity 或Item。
你在创建一个词汇表,而不是写一个程序。暂时做一回诗人。简单、生气勃勃、容易记
忆远远比说出全部内容更有效。规则:
Name a superclass with a single word that conveys its purpose in the design。
(用一个单词命名超类,传达它的设计目的),好的例子包括:
Number 、Collection、Magnitude、Model


全称子类名—区分异同
命名类的一种方法是给一个唯一的名字。唯一的名字可以让你用用最短的信息表达最多
的信息。
这对于通用术语来说是对的。Array 是Collection 的一个子类,因为绝大多数人都知道
“Array“意味着什么。
但在绝大多数情况下,类继承的层次结构对于理解你的代码十分重要,特别是一个子类
概念上是超类的变种同时又和超类共享实现的情况。你需要传递两部分信息:
1.新类如何相同,以及
2.新类如何不同
要表达相同,你可以借用超类的名字。这不一定是一个直接的子类和父类关系,层次上
有一定距离也无妨。要表达不同,你需要一个单词确切地强调新类为什么不是超类的理由。
所以,有规则:
Name subclasses in your hierarchies by prepending on an adjective to the superclass
name。
(在超类名字前加上内容命名你层次中的子类。)
例子:
BigInteger 是一个可以表达很大很大数字的整数。

 

方法命名—揭示意图
为什么好的代码总有很多简单的方法,代码可能只有一行,譬如:
class ParagraphEditor。。。。
public void highlight(aRectangle:Rectangle){
reverse(aRectangle);
}
这个highlight 只是分派到reverse,为什么还需要?
关键在于Communication。因为有了这个方法,以后的代码就可以用highlight 来说话。
我要加亮一个区域,我就highlight 它。
你当然可以直接使用reverse,结果是一样的。但所有调用代码都揭示了实现—“我通
过反转一个矩形来加亮它“。
代码应当揭示意图,它另外的好处是可以更方便通过继承修整。如果你想要一个
ParagraphEditor 用颜色加亮,那么只需继承ParagraphEditor 并覆盖highlight 即可。所以:
communicate what is to be done rather than how it is to be done。
传达你要做什么(接口)而不是你如何做(实现)。

 

实例(临时)变量命名—暗示角色
任何实例变量传达的信息包括两部分:
1.什么是它的目的?
2.它如何被使用?
一个变量的目的或者说它担当的角色对读者非常重要,因为它能够正确地引导读者的注
意力。一般,你在阅读代码时脑袋里总有一个目的。如果你理解变量的角色,而这个角色和
你的目的无关,那么你可以直接跳过使用该变量的无关代码。如果发现该变量的角色和你的
目的有关,那么你就能马上缩小你的阅读范围—那些引用此变量的相关代码。
一个变量如何被使用和发送给它什么消息通常是它的“类型“。理解类型并非不重要。
但是,对于实例变量来说,你能够了解这个变量所担当角色的唯一地方就是它的名字。如果
一个Point 中有两个实例变量叫做int1、int2 而并非x、y,那么在你理解哪一个是横向坐标,
哪一个是纵向坐标前,你可能要都上一堆代码。更何况你还要阅读与之相关的很多代码。而
变量的类型很容易从它声明、传递给它的消息看出来。所以:
Name instance variable for the role they play in the computation。Make the name plural
if the variable will hold a Collection。
(用计算中实例变量所承担的角色对它命名。如果变量持有一个集合,使用复数。)

分享到:
评论

相关推荐

    ITSM流程命名规范建议.pdf

    ITSM流程命名规范建议,此处便于开发人员按照相应标准进行开发,使AR程序易读。

    代码规范、命名、配置文件、Code+Review建议各类规范大全

    java、svn、mysql、dubbr、venus-common-monitor、venus-restful、公共码、日志、代码规范、命名、配置文件、Code+Review建议、postman等等等等;各类规范文档

    数据治理之数仓命名规范大全.pdf

    ODS层,是最接近数据源中数据的一层,为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据即 可,至于数据的去噪、去重、异常值处理等过程可以放在后面的DWD层...

    java命名规范 开发规范

    1. 模块命名、数据库表命名、域模型命名、各分层的类/方法命名、页面的命名; 模块命名: a. 包命名:com.project_name.module_name.action/service/dao/ws; service的实现都置于...

    Web前端开发技术-变量的命名规范.pptx

    变量的命名规范 JavaScript Web前端开发技术 认识JavaScript变量 2.变量的命名规范 在对变量进行命名时,需要遵循变量的命名规范,具体如下: 由字母、数字、下划线和美元符号($)组成 严格区分大小写 不能以数字...

    数据库设计命名规范.docx

    修订记录 时间 版本 修改点 修改人 目 录 1 目的 3 2 数据库名命名规范 3 3 数据库表命名规范 3 4 表字段命名规范 4 5 表设计规范 4 6 索引命名规范 5 7 主键、外键命名规范 5 目的 此规范包括数据库名命名规范、...

    微信小程序中JavaScript代码书写习惯与命名规范建议.pdf

    微信小程序中JavaScript代码书写习惯与命名规范建议

    整车仿真网格划分规范命名规则介绍-规范类文件网格划分规范命名规则介绍

    这个是针对汽车行业的仿真文档,用于为仿真的行业内人员提供建议

    数据库表设计命名规范.doc

    数据库库表设计命名规范 引言 目前航运系统产品中的部分数据库表命名上存在不规范的情形,为进一步规范系统开 发过程中数据表、字段等实体的命名,特制定本规范要求在后续新增表、字段时,需要 严格按照本规范执行。...

    数据库命名设计规范.doc

    字段的命名、设计规范 1)命名规范 凡是具有国家局标准数据要素字段命名规范的遵照国家局标准定义;国家局尚未制定 标准的遵照信息资源规划中三段式命名规则命名,字段名不超过18个字符为限。 三段式命名规则如下:...

    微信小程序中JavaScript代码书写习惯与命名规范建议

    代码命名原则 便于程序员开发与后期维护; 便于程序员读取并理解代码含义。 代码命名规则  变量及名称开头必须是以下字符中的其中一个 字母:a-z或者A-Z中其中一个,...代码命名规范 根据变量(函数)的功能与用途对其

    DIV命名规范-HTML教程

    HTML代码标签的命名规范,非常全,自己收藏的,拿来大家分享一下,对新手有很大的帮助,建议新手看一下,从开始就规范命名

    Python中规范定义命名空间的一些建议

    命名空间是Python程序的一大根本,编程时持命名空间的整洁还是十分必要的,这里就来为大家总结Python中规范定义命名空间的一些建议,需要的朋友可以参考下

    PowerShell编程中的一些命名规则参考

    包括函数名的命名、可选参数、必选参数等。 PowerShell中的函数定义可以很简单的使用一个“function <函数名>{函数体}”的形式去定义。但微软推荐创建函数时遵循以下实践规则。 1、函数名。 使用cmdlet的统一命令...

    数据库命名设计规范(1).doc

    字段的命名、设计规范 1)命名规范 凡是具有国家局标准数据要素字段命名规范的遵照国家局标准定义;国家局尚未制定 标准的遵照信息资源规划中三段式命名规则命名,字段名不超过18个字符为限。 三段式命名规则如下:...

    PHP编码规范php, 类命名,方法和函数命名,类库命名

    1. 介绍 1.1. 标准化的重要** 标准化问题在某些方面上让每个人...这有助于让这些建议在许多的项目中不断演进,许多公司花费了许多星期逐子字逐句的进行争论。标准化不是特殊的个人风格,它对本地改良是完全开放的。

    MongoDB 数据库的命名、设计规范详解

    第一部分,我们先说命名规范。 文档 设计约束 UTF-8 字符 不能包含 \0 字符(空字符),这个字符标识建的结尾 . 和 $ 有特殊含义,需要避免 区分大小写 键不能重复 键/值对有序 实践约束 【强制】文档中的key禁止使用_...

    CSS语义化命名方式及常用命名规则

    本文搜集了一些CSS语义化命名方式以及命名规则。如有错误或不妥之处,敬请指出,欢迎你提出更好的建议,加插更多的命名规范。

    好的 CSS 命名规范可以节约 Debug 时间

    简评:Debug CSS 是一种很耗时的操作,如果有良好的命名规范可以节约很多的 Debug 时间。 使用连字符(’-‘)分隔字符串 你可能习惯了在 Javascript 中使用小驼峰的命名方式: var redBox = document....

    python php javaq dotnet ios 编码开发规范ORACLE mysql数据库设计命名规范合集(9份)

    DotNet编程规范3.5.doc iOS开发编码规范.doc Java代码规范.docx MYSQL数据库设计规范....ORACLE数据库命名编码规范.doc ORACLE数据库设计规范.doc Oracle数据库设计规范建议.doc php编码规范.docx Python开发规范.docx

Global site tag (gtag.js) - Google Analytics