『好的程序员写机器能看懂的代码,优秀的程序员写人能看懂的代码』
熟悉马丁.福勒的同学都知道这是他关于代码可读性非常经典的一句话。
关于这句话,最近我们有一个很有意思的讨论:那就是代码的可读性,在有些情况下是否应该被违背?一个观点是,比如BIOS程序,可用内存是如此之少,性能非常关键,而且这类程序往往不大不需要太多的协作,所以在这类程序中,我们可以忽略代码可读性。
这个观点看起来很有道理,毕竟软件首先是要完成它的工作啊。
但仔细想一下,其实这里有一个隐含的假设:『性能和可读性是对立的』
真的是这样吗?
我想这里有两个概念要区分:『可读性』和『可懂性』
『可读性』指的是代码能让读者迅速理解作者所说的
『可懂性』指的是代码能让读者迅速理解作者所想的
虽然可读的代码往往也是可懂的,但有时也存在可读但不可懂的代码,就像有些书,我们能读懂里面的每句话,却不能理解作者的意思一样。
比如我们可以写出一段可读性极佳的代码,实现下述数学公式:
x - (x^3/3!) + (x^5/5!) - (x^7/7!) + ...
但可能很多人会完全不明白这段代码的意图是什么。
实际上这个数学公式就是著名的泰勒级数,用来计算正弦函数sine。
所以可读的代码并不总是可懂的,但反过来,不可懂的代码也可以是可读的。
回到『性能和可读性是对立的』这个假设。
为了性能,我们可能需要写一段晦涩难懂的算法代码,但这并不妨碍,我们依然让这段代码的每一行、每个命名都准确地表达出我们的意图,这样只要读者一旦具备了相关知识,就能马上理解这段代码能干什么。但是反过来,如果这段代码既不可懂,也不可读,那么即使读者是相关算法的专家,可能对这段代码也完全无法理解。
所以『性能和可读性是对立的』这个假设是一个逻辑谬误,我们的代码可以同时是高性能的,也是高可读的(但不总是可懂的)。
要想成为一名优秀的程序员,代码可读性应该是我们永远追求的一个目标。
注:插图来自《Clean Craftsmanship》
【版權聲明】
本文爲轉帖,原文鏈接如下,如有侵權,請聯繫我們,我們會及時刪除
原文鏈接:https://mp.weixin.qq.com/s/fjpR4qE_3jFDOcNiSsVNGw Tag: 程序员 程序开发