写点什么

代码简洁之道 -- 笔记,netty 架构原理图

用户头像
极客good
关注
发布于: 刚刚

这些坏味道的代码往往会造成代码很多问题,如:


1.难于变化


2.难于重用


3.设计过于复杂,不利于当前编码


4.同样的逻辑多处出现,没有进行抽象的统一


5.命名混乱,结构杂乱,难以阅读和理解


6.难于测试和验证

公司制定的十三大原则

4 不超


  1. 函数圈复杂度不超过 15

  2. 函数代码行数不超过 50 行

  3. 函数参数不超过 7 个

  4. 函数嵌套层次不超过 3 层


2 个一


  1. 每一行代码只表达一件事

  2. 每个变量只用于单一用途


7 禁止


  1. 函数/变量命名要有真实准确的意义 (禁止含有 Not、And、OR;禁止具有歧义的命名)

  2. 禁止使用 do/while 语句

  3. 禁止使用 continue 语句

  4. 禁止使用魔法数字

  5. 禁止使用三元表达式

  6. 禁止在 if 语句中使用运算表达式

  7. 禁止提交 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

重构

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
代码简洁之道--笔记,netty架构原理图