经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 职业生涯 » 查看文章
没看过这本书,你都不知道你的代码有多Low
来源:javafirst  时间:2018/12/5 10:05:30  对本文有异议

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

——Rober C.Martin


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

● 易于维护的

● 易于重构的

● 可重复使用的

● 保持一致

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

1.jpg

本书特点:

● 豆瓣评分9.0

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

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

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

2.jpg

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

1、有意义的命名

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

  1. def calc(n1, n2)
  2.  return n1 / n2
  3. end


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

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

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

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


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

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


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


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

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

  1. // bad :(
  2. def dvd(v1, v2)
  3.  return v1 / v2
  4. end
  5. res = dvd(10, 2)
  6. // good :)
  7. def divide(dividend, divisor)
  8.  return dividend / divisor
  9. end
  10. quotient = divide(10, 2)


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

  1. // bad :(
  2. wait(foo, 86400000)
  3. // good :)
  4. MILLISECONDS_IN_A_DAY = 86400000;
  5. wait(foo, MILLISECONDS_IN_A_DAY)


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

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

  1. # bad :(
  2. class Person
  3.  property :person_name
  4. end
  5. # good :)
  6. class Person
  7.  property :name
  8. end


3.让你的代码说话

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

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

  1. # always returns true
  2. def available?
  3.  return false
  4. end


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

  1. employee.work
  2. boss.promote(employee)
  3. # employee.party
  4. employee.work


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

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

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

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

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

读者书评

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

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


 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号