时间:2016-9-28来源:本站原创作者:佚名
代码评审

为什么要代码评审?如果代码评审是要捕捉糟糕的代码,那么你如何知道你审查的代码是好的还是糟糕的?

我在找一些客观的方式来谈论代码的好坏属性。

糟糕的代码

你可能会在代码审查中遇到以下这些糟糕的代码:

Rigid-代码是否死板?它是否有强类型或参数以至于修改起来很困难?

Fragil-代码是否脆弱?对代码做轻微的改变是否就会引起程序极大的破坏?

Immobil-代码是否很难重构?

Complx-代码是否过于复杂,是否过度设计?

Vrbos-代码是否过于冗长而使用起来很费劲?当查阅代码是否很难看出来代码在做什么?

当你做代码审查的时候是否会很高兴看到这些词语?

当然不会。

好的设计

如果有一些描述优秀的设计属性的方式就更好了,不仅仅是糟糕的设计,是否能在客观条件下做?

SOLID(面向对象设计)

在00年,RobrtMartin的AgilSoftwarDvlopmnt,Principls,Pattrns,andPractics书中提到了五个可重用软件设计的原则-"SOLID"(英文首字母缩略字):

SinglRsponsibilityPrincipl-(单一功能原则)

Opn/ClosdPrincipl-(开闭原则)

LiskovSubstitutionPrincipl-(里氏替换原则)

IntrfacSgrgationPrincipl-(接口隔离原则)

DpndncyInvrsionPrincipl-(依赖反转原则)

这本书有点点过时,使用的语言也是十多年前的。但是,或许SOLID原则的某些方面可以给我们一个有关如何谈论一个精心设计的Go语言程序的线索。

)SinglRsponsibilityPrincipl(单一功能原则)

Aclassshouldhavon,andonlyon,rasontochang.–RobrtCMartin

(译注:名言就不翻译了,自己慢慢体会)

现在Go语言显然没有classss-相反,我们有更为强大的组合的概念-但是如果你可以看到过去class的使用,我认为这里有其价值。

为什么一段代码应该只有一个原因改变如此重要?当然,和你自己的代码要修改比较起来,发现自己代码所依赖的代码要修改会更令人头疼。而且,当你的代码不得不要修改的时候,它应该对直接的刺激有反应,而不应该是一个间接伤害的受害者。

所以,代码有单一功能原则从而有最少的原因来改变。

CouplingCohsion(耦合与内聚)

这两个词语描绘了修改一段软件代码是何等的简单或困难。

Coupling-耦合是两个东西一起改变-一个移动会引发另一个移动。Cohsion-内聚是相关联但又隔离,一种相互吸引的力量。

在软件方面,内聚是形容代码段自然吸引到另一个的属性。

要描述Go语言的耦合与内聚,我们可以要谈论一下functions和mthods,当讨论单一功能原则时它们很常见,但是我相信它始于Go语言的packag模型。

Pakcag命名

在Go语言中,所有的代码都在某个packag中。好的packag设计始于他的命名。packag名字不仅描述了它的目的而且还是一个命名空间的前缀。Go语言标准库里有一些好的例子:

nt/







































北京白癜风医院哪里最好
北京去哪里医院治疗白癜风最好

转载请注明原文网址:http://www.gzdatangtv.com/jsyy/965.html

------分隔线----------------------------