《编写可读代码的艺术》读后总结

代码应当易于理解

代码的写法应当使他人理解它所需的时间最小化

把信息装进名字中

清晰和精确比装可爱好
使用专业的词
使用具体的名字来更细致地描述事物
给变量名带上重要的细节
为作用域大的名字采用更长的名字
有目的地使用大小写,下划线等
要多问自己几遍:“这个名字会被别人解读成其他的含义吗?” 要仔细审视这个名字,不会被误解的名字是最好的名字
命名极限最清楚的方式是在要限制的东西前加上max_或者min_
为布尔值命名时,避免使用反义的词(例如disable_ssl)
要小心用户对特定词的期望。例如,用户会期望get()或者size()是轻量的方法

审美

一致的风格比“正确”的风格更重要
如果多个代码块做相似的事情,尝试让他们有同样的剪影
把代码按“列”对齐可以让代码更容易浏览
如果在一段代码中提到A,B,C,那么不要在另一段中说B,C,A,选择一个有意义的次序,并始终用这样的顺序
用空行来把大块代码分成逻辑上的“段落”

注释

注释的目的是尽量帮助读者了解的和作者一样多
什么地方不需要注释:
    - 能从代码本身中迅速地推断的事实
    - 用来粉饰烂代码的“拐杖式注释”--应该把代码改好
你应当记录下来的想法包括:
    - 对于为什么代码写成这样而不是那样的内在理由(“指导性批注”)
    - 代码中的缺陷,使用像TODO:或者XXX:这样的标记
    - 常量背后的故事,为什么是这个值
站在读者的立场上思考:
    - 预料到代码中哪些部分会让读者说:“啊?” 并且给他们加上注释
    - 为普通读者意料之外的行为加上注释
    - 在文件/类的级别上使用“全局观”注释来解释所有的部分是如何一起工作的
    - 用注释来总结代码块,使读者不至于迷失在细节中
注释应当有很高的信息/空间率
尽量精确地描述函数的行为
在注释中用精心挑选的输入/输出例子进行说明
声明代码的高层次意图,而非明显的细节
用含义丰富的词来使注释简洁

控制流

把条件,循环以及其他对控制流的改变做的越“自然”越好,运用一种方式使读者不用停下来重读你的代码
相对于追求最小化代码行数,一个更好的度量方法是最小化人们理解它所需的时间
当你对代码做改动时,从全新的角度审视它,把它作为一个整体来看待
在写一个比较时,把改变的值写在左边并且把更稳定的值写在右边更好一些
你也可以重新排列if/else语句中的语句块,通常来讲,先处理正确的/简单的/有趣的情况
尽量不要用三目运算符
嵌套的代码块需要更加集中精力去理解,应该把它们改写成更加“线性”的代码来避免深浅套
通常来讲提早返回可以减少嵌套并让代码整洁

表达式

把你的超长表达式拆分成更容易理解的小块
要小心“智能”的小代码块--它们往往在以后会让别人读起来感到困惑
引入“解释变量”来代表较长的子表达式,这种方式有三个好处:
    - 它把巨大的表达式拆成小段
    - 它通过用简单的名字描述子表达式来让代码文档化
    - 它帮助读者识别代码中的主要概念
用德摩根定理来操作逻辑表达式--可以把布尔表达式用更整洁的方式重写(例如if(!(a&&!b))变成if(!a||b))
有时需要把问题“反向”或者考虑目标的对立面

变量与可读性

你希望你的同事随时都觉得是在面试吗
让你的变量对尽量少的代码行可见
操作一个变量的地方越多,越难以确定它的当前值
减少变量,即那些妨碍的变量
减小变量的作用域,越小越好,把变量移到一个有最少代码可以看到它的地方,眼不见,心不烦
只写一次的变量更好,那些只设置一次值的变量(或者const, final, 常量)使得代码更容易理解

重新组织代码

把一般代码和项目专有的代码分开
应该把代码组织得一次只做一件事情
把想法变成代码,用自然语言描述解决方案
最好的代码就是没有代码
删除没用的代码
从项目中消除不必要的功能,不要过度设计
重新考虑需求,解决版本最简单的问题,只要能完成工作就行
经常性地通读标准库的整个API,保持对他们的熟悉程度--“不要重复造轮子”

测试

测试也应当具有可读性,以便其他程序员可以舒服地改变或者增加测试
对使用者隐去不重要的细节,以便更重要的细节会更突出
让错误消息具有可读性
又简单又能完成工作的测试值更好
每个测试的最高一层应该越简明越好,最好每个测试的输入/输出可以用一行代码来描述
如果测试失败了,它所发出的错误消息应该能让你容易跟踪并修正这个bug
使用最简单的并且能够完整运用代码的测试输入
给测试函数取一个有完整描述性的名字,以使每个测试所测到的东西很明确,不要使用test1(),而要使用test_<functionName>这样的名字
最重要的是,要使它易于改动和增加新的测试
时间: 2024-11-05 22:44:12

《编写可读代码的艺术》读后总结的相关文章

《你的灯亮着吗》——读后总结

今天竟然一口气看完了这本书,晚上11点整,刚刚好写点总结. 这本书并不是一下子就能学会的,而是在生活中慢慢去习惯这种思考方式. 还是老样子,先看看这本书都讲了什么? 这本书是一种教别人遇到问题的解决思路的一本书.本书讲了如下的问题: 1 人们遇到问题如何思考? 2 遇到棘手的问题如何思考并解决? 3 对于某个问题何种角度来思考! 针对以上的问题,书中按照下面的章节进行介绍: 1 问题是什么? 2 什么是真正的问题? 3 这是谁的问题? 4 问题是从哪来的? 5 我们真的想解决问题吗? 如何解释“

惠普笔记本按开机键后电源灯亮的,但是屏幕一直是黑的,只有大写锁定键闪烁,闪3次一个循环,听得到风扇

现象: 惠普笔记本按开机键后电源灯亮的,但是屏幕一直是黑的,只有大写锁定键闪烁,闪3次一个循环,听得到风扇转动的声音,热风,cpu应该也在工作,请问是什么问题. 解决(我按照红色的作了,就可以了,真是奇怪...): 您好,感谢您选择惠普产品. 1.您的笔记本开机黑屏,请您回忆一下最近是否进行过什么方面特殊操作,比如最近是否进行过硬件改动(例如添加过新内存)或者连接了外接设备,如果是,建议您恢复之前硬件配置及断开所有外接设备看是否可以正常开机. 2.如果您没有进行过特殊操作,使用电池或电源适配器供

你的灯亮着吗?(3)

读后感言 读一本书就能够学会如何解决问题是不可能的,所以该书也不是按部就班的教你如何解决问题,更多的我觉得应该是大家通过阅读该书有所思,有所悟,最终形成自己的分析和解决问题的方法论. 1.问题的定义 问题是你期望和和你体验间的差别,要分析和解决问题时候首先需要搞清楚什么是真正的问题,问题从哪里来是谁的问题等内容.在工作和生活中常犯的毛病是扭曲问题定义,自己人为的去解释和翻译问题从而导致把问题的解决方法做为问题的定义. 从而导致后续一连串的错误. 2.分析和思考问题 分析和思考问题是对问题定义的进

[书籍分享]0-003.你的灯亮着吗:发现问题的真正所在

封面 内容简介 本书是由唐纳德·高斯和杰拉尔德·温伯格著作.它主要是向读者阐述了一些关于问题定义和看待问题的方式方法,帮助读者解放自己的思维禁锢,多方面的去寻找问题的定义,并解决问题. 这本书分六篇列举了20个故事.以它极其幽默的方式让读者去接收作者的思维和思考方式,读完这本书后你会发现,你会更容易的去全面看待一个问题.在我看来,这本书的主要目的就是发散你的思维. 作者 唐纳德·高斯,知名畅销书作家,目前写书27本,涉足领域:经济营销.伦理学.心理学等.知名图书:<上12堂说故事的营销课>.&

《你的灯亮着吗》第五篇、第六篇总结

第五篇讲的是问题是从哪儿来的?由一个叫珍妮特去波兰拜访她的祖母在旅途中遇到的麻烦引出主题.一开始她把问题推到“官僚主义”上,她感觉这似乎是最恰当的.但是最后她发现她十分倾向于把整件事归咎于“官僚主义”,之后她提出了一个至关重要的问题:问题是从哪儿来的?从这点出发,她成功找到乐各种备选答案.后来,珍妮特想这个问题的根源也许是她自己.她开始以正常的心态面对曾被她称作灰脸先生的人,他们顺利的交谈,最后事情的到了解决.一切都正常的进行着,一旦你确定问题真正从哪来,尤其是因为问题的根源常常在你自己身上.

四、按键控制LED灯亮灭

材料: 1.SAGOO UNO 1块: 2.按键模块 1块: 3.杜邦线若干. 步骤: 1.按照下图连接按键模块和UNO: SAGOO UNO引脚                                      按键模块引脚 3V3  <------------------------------------>    V(电源) GND <------------------------------------>    G(电源) Pin2  <----------

《你的灯亮着吗》读者笔记(三)

解决问题是最后一步,建立在分析问题基础上,解决问题有多条途径,如果通过各种约束条件选择最佳的途径来解决问题是需要考虑的重要因素.问题解决后要及时进行归纳和总结,形成自己的知识库. 当你在寻找问题定义的道路上疲倦地游荡时,不要忘记随时都回头看看,看看你是不是已经迷路了. 一旦你用文字来表达一个问题,请仔细推敲这些文字以使这种表述在每个人的头脑中都是一个意识. 如果这是他们的麻烦,就让它成为他们的麻烦. 当别人能够很好地解决自己问题的时候,千万不要越俎代庖. 如果某人能够解决这个问题,但是他本人却并

《你的灯亮着吗?》阅读笔记1

<你的灯亮着吗?> 目前才看了这本书的三分之一,不过对我来说很有针对性,感觉有达到那种一针见血的目的,也就是主旨大意很明确吧,让我真切能读进东西. 这两章的标题是“问题是什么”和“这个问题是什么?”它从不同的深度和层次上通过故事向我们阐述了当我们面对一些问题时的心理路程,我们不难从中得到体会. 当面对产生的问题时,在提出解决问题的方案之前,我们必须了解谁有问题,或者说这是谁的问题,其次再针对这些人给出对用问题的解释或定义,认识到问题的本质核心.在我们认识问题的过程中你会发现问题其实就是期望的东

《你的灯亮着吗》阅读笔记二

开头就是一个关于打印机的故事,说的是一家很大的计算机生产商打算开发一种新型打印机,丹用简单的思路就设计出了一种惊人有效的工具,铝条上欠着小针,这样就可以精确的在纸上扎出小洞来.按照我们的思路,丹这是立了功,应该发奖金加工资甚至升个职也不为过啊,但是后来却出现了戏剧性的一幕,因为丹的老板被针扎到了,于是丹的这一切也就泡汤了. 一开始的问题,丹确实是解决了,但是解决了这个问题,又会伴随着新的问题的出现.我们的生活中也是这样,往往遇见了问题,你解决了,但马上又会因为你解决的方式,或者这个问题的本身,又

《你的灯亮着吗》阅读笔记3

问题是从哪里来的?珍妮特•乔瓦斯基遇到的麻烦,来自哪里?她有多个答案,这些答案可能错也可能对.但是事实是什么没有人会知道. “问题的根源常常在你自己身上”,珍妮特以微笑的礼貌方式与公众服务人民进行了交流,虽然不知道问题的真正出现原因在哪,可是珍妮特却可以得到一个好的结果.我们在做事时是不是经常会忽略礼貌问题.跟人交流时,感觉对方态度恶劣,自己很反感,所以自己态度也会很恶劣,却从没想过自己应该态度好一点,珍妮特给自己上了一课. “在这世上有两种人,一种人做事,另一种人给别人找事做.离第二种人远一点