代码精进之路 第一章 命名

Posted zyz52018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码精进之路 第一章 命名相关的知识,希望对你有一定的参考价值。

名为万物之始,万物始于无名,道生一,一生二,二生三,三生万物。

——《易经》

程序员的工作中,大部分时间都在阅读和理解代码,一个好的命名能够让代码的概念清晰,增加代码的表达力;词不达意的命名会破坏我们的思考的连贯性,分散有限的注意力。

命名的力量远超乎于我们的想象,一个好的企业名,产品名或者是命名都能带来不同的影响力。

就目前国内最大的互联网电商企业阿里巴巴,马云爸爸在开始做这个电子商务网站的起初,就开始思考该如何取一个名字,不仅容易记且还能让人觉得有意思。书中就写到了这个故事"有一天,马云在旧金山的街上发现了阿里巴巴这个名字蛮有意思,正在思考时,一名服务员送过来了一杯咖啡。马云就问题他:‘你知道阿里巴巴吗?’他说:‘当然知道了,就是open seasame(芝麻开门)’。然后马云在街上找了来自不同国家数十个人,问他们知道阿里巴巴吗?他们大多数都能讲到芝麻开门。"所以,才有了阿里巴巴这个名字,一个好的名字不仅能让人很容易的记住,且还有可能成为一个企业发展路上的垫脚石。

书中还跟我们分享了另外的一个故事,“java企业级应用的开发历史上,也有这么一段有趣的历史。在2000年左右,EJB(ENterprise Java Bean)大行其道,这让Martin Flower,Rebecca Parsons 和 Josh MacKenzie等人感到很困惑。后来他们发现人们之所以不愿意在他们的系统中使用普通的java对象,是因为缺少一个酷炫的名字——POJO(Plain Old Java Obect)。当时的EJB在开发和部署上给开发者带来了沉重的负担,POJO概念的提出很快得到了开发者的拥护。Spring等一系列轻量级框架的诞生,很快终结了EJB的统治地位,因此在一定的程度上加快了EJB的灭亡”

其实,说到命名是一个很难得活,起名字这件事其实很耗脑力,需要深思熟虑才能取出名副其实表达性很好的名字。命名大的难就在于名字本身就是一个抽象的过程,在工作中,我们需要给一个模块,一个对象,一个函数甚至于一个变量找到合适的名字,有时候往往对其问题理解不够透彻取不到很好的名字,所以在对问题进行分析和抽象,就得要很好的调整设计代码,之所以能够很好的写出一手好代码,基于能够取很好的命名。

代码既是文档,可读性好的代码能够不借助注释就能够很好的理解。接下来,针对各种命名说明一下如何设计:

变量名:名词,有很好的业务,表达能力 例如 PAGE_SIZE 每页的数量,一看就是明白。

函数名:函数名字需要具体,不能太空泛没有意义,例如 processData()很摸棱两可,相比之下ValidateUserCredentials()就要好许多,函数名就是要确定做什么而不是怎么做。

类名:类是面向对象重要概念之一,一个大的系统可分为两个大类:实体类和辅助类。命名需要充分体现业务语义,例如,Customer控制类CustomerController,提供Customer服务类CustomerService,获取数据仓储类CustomerRespository。

包名:代表了一组有关系的类的集合,之前的javascript早期就是起名太宽泛了,导致后期有点混乱。包名就需要升级到抽象上,例如 Apple,Pear,Orange就可以包在fruit包中。

模块名:这里说的模块Module主要是指Maven中的module,模块就是相对于包粒度更大,包含了多个包 就像是Controller器模包含xxx-controller等。

以上是关于代码精进之路 第一章 命名的主要内容,如果未能解决你的问题,请参考以下文章

云计算成长之路第一章 01

NODEJS+MONGODB+AngularJS的学习之路第一章

iText学习之路iText in Action 第一章 随便画画带你入门

Spark亚太研究院系列丛书Spark实战高手之路-第一章 构建Spark集群(第五步)

python自学之第一章 —— 变量

第一章:面试的流程