討論交流
我的两分钱 2022-09-20 252 0 0 0 0
程序员,程序开发,『好的程序员写机器能看懂的代码,优秀的程序员写人能看懂的代码』熟悉马丁.福勒的同学都知道这是他关于代码可读性非常经典的一句话。关于这句话,最近我们有一个很有意思的讨论:那就是代码的可读性,在有些情况下…

好的程序员写机器能看懂的代码,优秀的程序员写人能看懂的代码

熟悉马丁.福勒的同学都知道这是他关于代码可读性非常经典的一句话。 

关于这句话,最近我们有一个很有意思的讨论那就是代码的可读性有些情况下是否应该违背?一个观点,比如BIOS程序,可用内存是如此之少,性能非常关键,而且这类程序往往不大不需要太多的协作,所以在这类程序中,我们可以忽略代码可读性。

这个观点看起来很有道理,毕竟软件首先是要完成它的工作啊。

但仔细想一下,其实这里有一个隐含的假设:『性能和可读性是对立的

真的是这样吗?

我想这里有两个概念要区分:『可读性』和『可懂性』

『可读性』指的是代码能让读者迅速理解作者所说的

『可懂性』指的是代码能让读者迅速理解作者所想的

虽然可读的代码往往也是可懂的,但有时也存在可读但不可懂的代码,就像有些书,我们能读懂里面的每句话,却不能理解作者的意思一样。

比如我们可以写出一段可读性极佳的代码,实现下述数学公式:

        x - (x^3/3!) + (x^5/5!) - (x^7/7!) + ...

但可能很多人会完全不明白这段代码的意图是什么。

实际上这个数学公式就是著名的泰勒级数,用来计算正弦函数sine。

所以可读的代码并不总是可懂的,但反过来,不可懂的代码也可以是可读的。

回到『性能和可读性是对立的』这个假设。

为了性能,我们可能需要写一段晦涩难懂的算法代码,但这并不妨碍,我们依然让这段代码的每一行、每个命名都准确地表达出我们的意图,这样只要读者一旦具备了相关知识,就能马上理解这段代码能干什么。但是反过来,如果这段代码既不可懂,也不可读,那么即使读者是相关算法的专家,可能对这段代码也完全无法理解。

所以『性能和可读性是对立的』这个假设是一个逻辑谬误,我们的代码可以同时是高性能的,也是高可读的(但不总是可懂的)。

要想成为一名优秀的程序员,代码可读性应该是我们永远追求的一个目标。



注:插图来自《Clean Craftsmanship


Tag: 程序员 程序开发
歡迎評論
未登錄,
請先 [ 註冊 ] or [ 登錄 ]
(一分鍾即可完成註冊!)
返回首頁     ·   返回[討論交流]   ·   返回頂部