没看过这本书,你都不知道你的代码有多Low

程序员书库(ID:OpenSourceTop) 编译;
链接:https://hackernoon.com/tips-from-the-book-every-programmer-should-read-425fb77873f8


任何一个傻瓜都能写出计算机可以理解的代码,惟有写出人类容易理解的代码,才是优秀的程序员

——Rober C.Martin


当我开始关心代码可读性时,我开始留意自己的代码是否是:

● 易于维护的

● 易于重构的

● 可重复使用的

● 保持一致

而Robert Martin's也称"Bob 叔"的《代码整洁之道》正是程序员编写出干净代码的圣经,旨在帮助开发者编写出干净的代码,从而有效提升代码质量

没看过这本书,你都不知道你的代码有多Low


本书特点:

● 豆瓣评分9.0

● 阐述了整洁代码的敏捷实践的方法

● 书中介绍规则均来自Martin多年的经验,拥有很高的借鉴价值

如果你不理解什么样的代码称之为干净的代码,你可以看看下面这张图:


没看过这本书,你都不知道你的代码有多Low



对大多数软件开发人员而言,写出来的代码都逃不开以下几个问题:

1、有意义的命名

书中的其中一个章节就专门在讨论如何使用最能体现本意的命名,看看下面这个例子

def calc(n1, n2)
return n1 / n2
end


你认为“calc”是这个函数的一个好名字吗?Bob叔肯定会说会说:不!这是为什么呢?

1、“calc”是一个缩写么?显然不是!

2、函数是可以做某件事儿的程序,它必须以动词命名。

3、

即使我将“calc”重新命名为“calculate”,它仍然是模糊的。我们需要通过赋予函数名更多的含义来让人更容易理解


因为这个函数是要实现两个数字相除,因此“divide”就是一个很好的函数名

def divide(n1, n2)
return n1 / n2
end
result = divide(1, 2)


即便如此,这段代码仍然存在问题,参数n1和n2是没有语义的,如果我们把它们定义为“被除数(dividend)和“除数(divisor)”,“result”变量的值也会随之改变,我们可以把它称之为“商(quotient)”,结果会如何呢?


def divide(dividend, divisor)
return dividend / divisor
end
quotient = divide(1, 2)

变量,类,函数和方法应根据其语义去命名。切记不要缩写名称而要用有意义的命名。

// bad :( 

def dvd(v1, v2)
return v1 / v2
end
res = dvd(10, 2)
// good :)
def divide(dividend, divisor)
return dividend / divisor
end
quotient = divide(10, 2)


除了有意义的名称之外,干净的代码还应该编写可搜索的变量,例如:

// bad :(
wait(foo, 86400000)
// good :)
MILLISECONDS_IN_A_DAY = 86400000;
wait(foo, MILLISECONDS_IN_A_DAY)


2.不要添加不需要的语义

例如,当你在编写一个类里面的方法或字段时,不要在方法/字段中引用类名

# bad :(
class Person
property :person_name
end
# good :)
class Person
property :name
end


3.让你的代码说话

正常的规则底下,一段良好的代码,注释是不可或缺的,但是如果你的代码已经在命名中体现出所要表达的意思,你也就不再需要注释了

比如,下面这段代码就有一个非常糟糕的注释:

# always returns true
def available?
return false
end


在快速代码审查中,注释行可能会导致你阅读体验很不好,如:

employee.work
boss.promote(employee)
# employee.party
employee.work


为什么要读《代码整洁之道》?

以上内容只是《代码整洁之道》一书中的凤毛菱角,如果你的代码存在以上问题,那么你应该好好阅读本书。

简而言之,《代码整洁之道》主要提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。

Bob书通过本书给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

毋庸置疑,程序员花在阅读代码的时间比编码的时间长,如果一个代码库一开始就没编写好,存在的时间越久,就会离其所描述的代码的意义越远,对后来者的阅读造成混淆,因此为了减少程序员在这方面的时间浪费,许多企业大力提倡员工阅读这本书

读者书评

以下是摘录了亚马逊、豆瓣上高票支持的书评,也是相对客观的书评,我们在选择图书的时候,也可以参考国内外的读者评价:

这本书很棒,读了几次。我想补充一点,亨特和托马斯的“实用程序员”将是本书的完美补充。 

详细解说了编写代码时的规范和注意事项。强调简单、直接,不管是命名、类和函数的设计等都应该如此。需要在大型的工程实践中才能更深刻的体会。
这本书重在对细节的关注。书的编排极其合理,从最小的点开始一点点往大处讲。感觉对刚开始工作的小朋友们,代码看得、写得还不够多,读设计模式之类的书可能还没什么体会。但这本代码细节的书,却是能立竿见影,直接用到工作中去的。
每个码农都应该读。
详细解说了编写代码时的规范和注意事项。强调简单、直接,不管是命名、类和函数的设计等都应该如此。需要在大型的工程实践中才能更深刻的体会。


分享到:


相關文章: