代码规范的一些点

  |   0 评论   |   0 浏览

3.编写整洁的代码

是否是整洁的代码,需要遵循一定的方法论,不能靠个人主观的感觉判断。推荐大家看完《代码整洁之道》这本书,遵循这里的原则。

列出一些必须要遵循的原则:

命名

做有意义的区分

区分名称,要使用读者能清洗鉴别出不同之处的方式。禁止类似customerInfo/customer、 user/userInfo、 money/moneyAmount 这种没有区分度的命名

使用可搜索的名称

例:WORK_DAYS_PER_WEEK 很容易搜索,但是数字5就无法搜索了

类名

类名和对象名应该是名词或名词短语。类名不应当是动词。正例:Customer、AddressParser;反例:Manager、Processor、Data

方法名

方法名应当是动词或者动词短语。比如:deletePage/save等

添加有意义的语境

很少有名称能自我说明,你需要良好命名的类、函数和名称空间来放置名称,给读者提供语境。如果没这么做,需要给名称添加前缀。

比如在缺少上下文的情况下,firstName、lastName、street就需要添加前缀addrFirstName、addrLastName、addrStreet来表明语义

函数

短小

  • 函数的第一规则是要短小
  • 函数的缩进层次不能超过两层

只做一件事情

  • 函数应该做一件事情,做好这件事,只能做这一件事
  • 如何判断是否是一件事?如果函数只做了函数名下同一抽象层上的步骤,则函数还是做了一件事。包含了多个不同抽象层级的步骤,则不是一件事。举例:

每个函数一个抽象层次

函数中的语句都要在同一个抽象层级上

switch语句

switch语句违背了单一职责原则(有好几个修改它的理由)、开放闭合原则(每当添加新类型,就必须修改它)。应该把switch语句埋到抽象工厂底下

函数参数

最理想的是零参数函数,其次是单函数参数,再次是双参数函数,应尽量避免三参数函数。有足够的理由才能使用三个以上参数

无副作用

不能在函数中做超出预期的改动,或者隐藏逻辑

分隔指令和询问

函数要么做什么事,要么回答什么事,不可二者兼得。举例:

代码块

JSON

// 该函数设置某个指定属性,如果成功就返回true、不存在属性则返回false
public boolean set(String attribute, String value);

这样导致了这样的写法

代码块

JSON

if (set("userName", "danny")) {
  // .....
}

可读性极差,应该改为:

代码块

JSON

if (attributeExists("userName") {
  setAttibute("userName", "danny");  
  ...
}

标题:代码规范的一些点
作者:guobing
地址:http://www.guobingwei.tech/articles/2020/08/14/1597409729531.html