代码简洁之道 -- 笔记,2021 华为 Java 面试真题
函数圈复杂度不超过 15
函数代码行数不超过 50 行
函数参数不超过 7 个
函数嵌套层次不超过 3 层
2 个一
每一行代码只表达一件事
每个变量只用于单一用途
7 禁止
函数/变量命名要有真实准确的意义 (禁止含有 Not、And、OR;禁止具有歧义的命名)
禁止使用 do/while 语句
禁止使用 continue 语句
禁止使用魔法数字
禁止使用三元表达式
禁止在 if 语句中使用运算表达式
禁止提交 SVN 的代码中含有死代码
[](
)编写函数注意的地方。
1.使用卫函数:卫函数是指减少程序的复杂度提前返回输出。
2.函数、变量的命名需要表达真实意图,不能词不达意。达到让人读方法名就能知道这个函数是做什么用的效果。
3.如果是一个 public 函数,尽量保持函数的单一抽象层次原则。即将这个函数抽离分解成若干个子函数组成,每个函数只做一件事情。这样的目的可以使得代码变得简洁易懂。
如下面的代码。
If(!readOnly){…}可以使用卫函数,改成 if(readOnly){return };然后对函数进行抽象,可以抽成三部分,第一部分判断是否为只读,第二部门扩容,第三部门添加函数。如下:
这样代码就显得很简洁了,让人一眼就能明白是做什么的。最后一个函数 addElement()中只有一条语句也单独的抽成一个函数,这样做的好处是保证的函数的单一抽象层次原则。像书的目录一样,整个 add()方法中都是函数组成,显得更加的美观,并且抽成函数可以通过函数名就能知道这个函数是做什么的,比直接写语句更加的直观。
之前的理解是代码尽量多写注释,但是听完课之后理解到不要写无用的注释。当你想通过注释来说明一段代码是做什么的时候也许你就应该将其抽离出成函数,通过函数名来解释这个函数的作用,这样使得代码更加简洁。另外一段代码很乱,就不要给它再增加注释了,重写这个方法吧。
[](
)函数的四个一原则
一个变量只做一个用途
一行代码只做一件事
一个循环只做一件事
一个函数只做一件事
[](
)代码的圈复杂度计算
1.进入函数,开始执行代码 +1
2.遇关键字(if /else if /for /while /&& /|| ) +1
3.Switch 的每个 case/default +1
4.三元运算 a? b:c +1
5.Catch +1
6.Default +1
[](
)重构
重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。
1、不改变外部行为
2、只改善内部结构——使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性
[](
)重构的目的:
1.找出程序中的错误
2.帮助我们提高变成速度
3.帮助我们提高设计和编码水平
[](
)重构的时机
评论