编写可读代码的艺术-读书笔记
最近读这本书,总体感觉作者很实在,通过一个一个的小细节,诠释了可读代码的衡量情况。
代码应当易于理解
- 代码的写法,应当便于别人理解它需要的时间最小化
把信息装入名字中
- 选择专业的词,避免使用空洞的词
- 找到更有表现力的词
- 避免像tmp这样的范范的名字
- 像i、j等名字常用做索引或者迭代器,尽管空泛,但是大家都知道他的意思
用具体的名字代替抽象的名字
- 使用具体的名字来更细致的描述事物
- 给变量带上更重要的细节(例如在值为毫秒的变量后面加上_ms)
- 为作用域大的名字采用更长的名字,不要用让人费解的一个或者两个字母的名字来命名几屏之间都可见的变量
- 有目的的使用大小写和下划线等
使用不会被误解的名字
- 推荐用min和max来表示极限的情况
- 推荐使用first和last来表示包含的范围
- 推荐用begin和end来表示包含和排除范围
- 给boolean值命名加上is、has、can会更加易于理解
- boolean 这一类,避免使用反义名词(例如disable_ssl=false不如use_ssl=true)
代码的审美
- 使用一直的布局,让读者很快就能习惯这种风格
- 让相似的代码看上去相似
- 把相关的代码进行分组,形成代码块
- 重新安排换行来保持一致和紧凑(例如构造函数中多个参数)
- 用方法来整理不规则的东西
- 在需要的时候使用列对齐
- 把代码按照业务含义分成“段落”
- 个人风格的一致性
- 一致的风格比“正确”的风格更重要
什么情况不需要注释
- 不要为了那些从代码本身就能快速推断的事实写注释
- 不要为了注释而注释
- 不要给不好的名字加注释,应该把名字改好
用注释记录你的思想
- 对于为什么代码写成这样而不是那样的内在理由
- 代码中的缺陷,使用TODO或者XXX来进行标记
- 常量背后的故事,为什么是这个值
站在读者的立场上思考
- 预料到代码中哪些部分会让读者不理解,这时候需要添加注释了
- 为普通读者意料之外的行为加上注释
- 在文件或者类级别上使用全局观的注释来解释
- 用注释来总结代码块,是读者不致于迷失在细节中
把控制流变得易读
- 条件语句的参数顺序(比较的右侧,用来比较的表达式,更加倾向于常量)
- if/else中,首先处理正逻辑而不是负逻辑,优先处理简单的情况,先处理有趣或者可疑的情况
- 默认情况下使用if来进行判断,三目运算符在最简单的情况下使用
- 避免使用do/while循环,因为while循环相对更加易读,先条件后代码块
- 嵌套的代码块需要更加集中精力去理解,每层新的嵌套都需要读者把更多的上下文信息带入,应该把他们改成更加线性的代码来避免深嵌套
- 通常来讲,提早返回可以减少嵌套并让代码整洁
拆分超长的表达式
- 一个简单的技术是引入“解释变量”来代表较长的子表达式,这样可以把巨长的表达式拆成小段,读者更加容易理解代码中的主要概念
- 德摩根定律来操作逻辑表达式(例如if(!(a && !b)))改为 if(!a || b)
变量与可读性
- 减少变量,消除没用的“中间结果”
- 减少每个变量的作用域,越小越好
- 只写一次的变量更好
重新组织代码
- 把一般的代码和项目专有的代码分开
- 组织代码的简单技巧,一次只能做一件事情
- 用自然语言描述程序,然后用这个描述来帮助你写出更加自然的代码
少写代码
- 从项目中消除不必要的功能,不要过度设计
- 经常性的通读标准库的整个API,保持对他们的熟悉程度
相关推荐
《编写可读代码的艺术》是一本致力于提升代码可读性的书籍,强调了代码可读性在软件工程中的重要性。代码可读性不仅关乎程序员之间的沟通效率,还直接影响到软件的维护成本。以下是对书中一些核心观点的提炼: 1. *...
通过实践,开发者可以学习到如何组织项目结构、如何编写高效可维护的代码、以及如何调试和测试应用。这在学习新API或技术时尤其有用,因为实际操作往往比理论解释更能加深印象。 "读书笔记"则是对书中内容的补充和...
《C语言的科学与艺术》是一本深入探讨C语言编程技术的书籍,它不仅涵盖了C语言的基础知识,还强调了编程的艺术性和科学性。以下是书中的关键知识点: 1. **编译器环境配置**: - **VC++6.0**:在Visual C++ 6.0...
Code-Collection 个人博客: 解决方案 windows 调试安卓 webview 升级 gcc 安装 llvm ...页面埋点 获取网络信息 页面截图 ...代码片段 ...mocha 在浏览器中测试 es6 代码 ...编写可读代码的艺术 其他 笔记 电脑配
"软件测试的艺术阅读笔记侧重记录概念及方法" 软件测试是一种确认计算机程序是否完成了其应当完成的功能,不执行其不该有的操作的一种或一系列过程。测试的目的就是为了发现错误而执行程序的过程。 软件测试的重要...
Martin(也被称为Uncle Bob)编写的经典书籍,主要探讨了如何编写高质量、可维护的代码。这个压缩包文件"clean-code-booknote"显然是一个读者对这本书的读书笔记,可能包含了书中关键概念、原则和实践的总结。虽然...
这个名为"java并发源码集合-learnJava"的资源是针对深入理解Java并发编程和集合包源码的一份宝贵资料,主要涵盖了《Java 8》、《Java并发编程艺术》两本书的读书笔记和实践练习。通过学习这些内容,开发者可以更好地...
以上内容总结了《JavaScript DOM 编程艺术》第一章的读书笔记,概括了JavaScript简史,从而让我们了解到这一语言的发展脉络,以及它如何从最初的技术竞争中走向标准化,并最终成为现代Web开发不可或缺的一部分。
在实际开发中,正确的注释习惯有助于代码的可读性和维护性,合理地声明和使用变量能确保代码的健壮性,而掌握各种数据类型及其操作方法则是编写高效逻辑的关键。在处理数组和对象时,尤其需要注意选择合适的数据结构...
【C++ 学习笔记】深入理解编程与C++基础 ...通过阅读本系列的学习笔记,你将有机会逐步建立起对C++和编程的全面理解,从而在编程世界中游刃有余。记住,编程不仅是语言的学习,更是解决问题的艺术。
正如艺术家需要研究大师的作品来提升技艺,程序员也需要分析和理解那些由经验丰富的开发者编写的高质量代码。尽管直接向大师学习的机会不多,但我们可以通过阅读他们的代码来间接学习。代码就像一种无声的教程,其中...
由于不是所有浏览器都支持,所以需要编写兼容性代码,例如上面展示的自定义函数。 获取和设置元素属性同样重要。我们可以使用`getAttribute`和`setAttribute`方法: - **getAttribute**:获取元素的属性值,如`...
该框架是为Web艺术家和开发人员设计的,强调简洁、优雅的代码风格,拥有非常丰富的特性和模块,是目前世界上最流行和功能最强大的PHP框架之一。 ### 标题知识点: #### Laravel 5版本特性 Laravel 5版本的推出,...
良好的编程风格不仅使代码更易于阅读和维护,还能提升团队协作效率。遵循一致的命名规范、注释规则和代码组织方式是良好编程风格的基础。 **2.6 流程控制语句** 流程控制语句如if-else、switch-case、for、while等...
Arduino是一个开源的电子原型平台,通过编写简单易懂的代码来控制硬件设备。用户可以使用Processing将复杂的视觉效果和交互逻辑应用到Arduino项目中,使得硬件设备的显示和用户交互更加丰富和动态。例如,可以使用...
然而,由于浏览器环境的多样性,开发者在编写JavaScript代码时需要考虑多种最佳实践来确保网页的性能、用户体验以及跨平台兼容性。接下来,我们将详细探讨《JavaScript DOM 编程艺术(第2版)》一书中第五章提到的...
通过阅读这些书籍,Java开发者可以系统地学习和提升他们的编程技能,理解面向对象设计的原则,熟悉Web开发框架的运用,并掌握编写高质量代码的艺术。无论是初学者还是经验丰富的开发者,这些资源都能提供宝贵的指导...
结对编程则提倡两个开发者共同编写代码,从而提高代码质量和团队沟通。 在探讨用户体验(UX)和用户界面(UI)设计时,我发现这两个方面是软件开发中不可或缺的部分。UI是用户与产品交互的视觉表现,而UX关注的是...
12. **现在优于从不**:尽早开始编写代码,但同时要意识到仓促之作可能会导致质量问题。在开始编码之前,充分思考和规划是必要的。 13. **如果实现难以解释,那可能是个坏主意**:如果一个设计或实现难以向他人解释...