代码为什么需要可读?_编写可读代码的艺术书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 编写可读代码的艺术 > 代码为什么需要可读?
mftian 编写可读代码的艺术 的书评 发表时间:2012-10-01 11:10:59

代码为什么需要可读?

有一次在code review的时候,一个应届毕业生问我,代码为什么需要可读性。我和他讲代码的美感和优雅、可维护性、可测试性,他却说那有什么用,只要能跑起来,能够实现功能,不就是好代码么?我不能否认这一点,但只能实现功能的代码绝对称不上好代码,就像没杀过人的人就是好人,你觉得对么?也有人和我争论说,我写的是代码,实现的是逻辑,如果我敲键盘之前还要想想起个什么变量名比较好,那会大大降低我的效率。

之前,我并不是很清楚如何反驳他们。很多时候我对代码的感觉还停留在直觉层面,应该这么写,而不应该那么写,很多时候我都说不清楚为什么。但我很高兴能够读到了这本书,作者们在书中从理论上解答了我的困惑。

可读性 == 可测试性 == 代码质量 == 代码优雅 == ……

他们之间其实是等价的。

从这本书来说,或者说从可读性的角度来说,增强可读性的终极目标只有一个:降低他人理解这段代码所需的时间。其实这个等式中的其他几项,也都是对这个终极目标的另一种表达而已。为什么?因为在这么一本不到200页的小书之中,他们都出现了。代码中的变量名和格式可以帮助我们发现bug,用自然语言描述代码也能帮助我们发现bug,提高可读性可以封装代码提高可测试性,提高可读性可以重构代码使之变得更加清晰。可读性和可靠代码的其他优良品质有着千丝万缕的联系。

不给五星是因为我看的是译本,翻译的还算流畅,但是也有让我想说WTF的地方:
1、中文段落开头不空两格?WTF?
2、章节的开头一定要浪费一页纸么?WTF?
3、几处明显的翻译问题:
a) 114页最上面一行:“处理Javascript浏览器中的cookie”,原文是"Dealing with browser cookies in Javascript",应该译为“使用Javascript处理浏览器中的cookie”
b) 124页两个代码段中间:“有时有些值谁不知道是什么”。WTF?这tm是啥意思?原文是"sometimes those values were missing altogether",应该译为“有时候这些值根本就不存在”
c) 128页的第一段整体翻译的就很不通顺,尤其是“因为这样其他只是没有你这么渊博的人才可以理解它”,根本就不知所云了,WTF?原文是"so that someone less knowledgeable can understand",应该译为“这可以帮助水平不如你的人理解它。”

诚如书中所说,衡量代码质量的一个简单标准就是你在读代码的过程中说了多少次WTF,书也一样。好在这些翻译问题都不在很关键的地方,没有破坏这本书的价值。

有空我还希望看看《Clean Code》。不知道那本书的作者对代码质量有着怎样的理解,不过无论如何,代码质量都是程序员永恒的追求。

展开全文
有用 19 无用 0

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“代码为什么需要可读?”的回应

Tranch 2014-02-22 12:56:32

段落开头为什么要空两格?有间距不就行了。

Liustein 2014-02-21 16:48:48

ls说得对,还有就是是可复用吧,写得好的代码过了十年换了几拨人一样的能用,可以大大的节省成本。写得不好的代码过了一年自己都看不懂了,等作者走了很难维护,甚至几乎不可维护。如果又要添加功能,可能要重写,是极大的浪费。

xs.zhou 2013-05-03 10:18:03

之所以对代码可读性的强调,
一个是为了和他人进行合作的时候会比较方便,现在的软件很多都不是单干可以弄出来的。
另外一个是为了方便将来自己看自己的代码。很多时候当写的代码很多的时候,变量胡乱命名,逻辑结构混乱,不要说别人,就是自己可能都看不懂了。

Frederick 2013-01-31 11:45:48

所以看书也一样,看原版能保持书本身内容的可读性。

I'M67 2012-12-25 20:12:16

单干的大神黑客都是这样的。。。他们的代码没人看的懂,我这种普通的程序员确实需要高可读性的代码来确保可维护性。。。。

mftian 2012-10-28 17:09:40

@kevin 这种人显然配不上“高级”二字,入门而已

kevin 2012-10-28 13:30:04

我们公司有一个高级工程师,他写的代码只有他自己能看懂,别人根本看不懂。变量声明全是什么“int i1, i2”之类的。你跟他说命名规则,他一堆歪理,还说,我写的代码绝对不会有逻辑问题之类的。嗨,做开发最怕遇到这种人。

Akagi201 2012-10-18 23:01:06

这是我读过的第一本代码整洁的书, 希望以后有空看看<clean code>