《Clean Code》读书笔记——第二周
本周我阅读了《Clean Code》。
“神在细节中!”,建筑家范德罗如是说。他当然专注于基于宏伟构架之上的永恒建筑形式,他也同样为自己设计的建筑挑选门把手。同样软件开发也是这样,小处见大。在宏伟的建筑作品中,我们也要关注细节的回响。重点便是整理,从而达成Clean。一个很好的例子是对于变量命名,认真对待每个变量名。书中作者说,我们就像一群代码猴子,无视混乱无序,失去代码的真谛。整洁的代码正是迈向编程之美的基础,重要性毋庸置疑。
作者断言,我们永远需要代码。我们可以创造各种工具,但是永远无法抛弃必要的精确性,代码呈现了需求的细节。糟糕的代码可能毁了一个公司,一个工程,整洁的代码不仅有关效率,还有有关生存。勒布朗法则说:稍后等于永不。我们不能寄希望于稍后清理,抱着混乱代码好于没有代码的态度开发。完成课程任务时,我们往往以得到一段可以运行的代码为目标,不注意各种细节,一旦出现问题,需要重构代码,可能连把自己的代码读一遍都痛苦万分。整洁的代码将有利于后期开发,方便他人或者自己随后的阅读。
那么什么是整洁的代码呢?书中询问了一些知名的程序员,获得了众多答案。
- 优雅高效,整洁的代码只做一件事
- 简单直接,如同优美的散文
- 便于他人增改
- 对代码全心投入
- 没有重复代码
当然这是他们的观点,每个人都可能得到他们自己的答案,并没有真正的权威答案。就我个人看来,整洁的代码应当高效清晰,便于阅读修改,逻辑结构鲜明,更抽象一点,有简洁的美感。是的,要有美感,这种美感来自于程序员编写代码是的清晰逻辑架构,函数的高效使用,以及细节的投入。
软件中随处可见命名,这一细节虽小,对于代码的可读性有很大的影响。书中给出了一些简单的规则,首先应当让命名名副其实,避免误导,作有意义的区分,比如把抽象的单字母变量换成英语单词,这显然会极大增强代码可读性和可描述性。是想C语言和其他高级语言,想必汇编或者机器语言,让人感到简单方便的重要方面就是各种操作被冠以英语单词的‘名字’,同样读得出来,有意义的命名会极大改善你的代码。同时也要注意回避 ‘扮可爱’(试图有趣的命名),双关,添加没用的语境等。
函数是语言的动词,类是名词。函数是代码必不可少的重要部分,要写好函数首先要明白函数是对具体操作的抽象,每个函数里面嵌套一个函数就是一个抽象层级。混杂不同的抽象层级会导致混乱,失去简介。具体的,函数应该做一件事,做好这件事,只做这件事。这样你会收获一个高效简洁的函数,一般而言,这会是一个短小的函数,符合函数编写的第一原则。
初学C语言,重要的一课是如何添加注释,如何规范清晰地添加注释。好的注释可以提供函数使用的信息,对编写意图进行阐释,或者警示其他程序员要注意的细节。但是,注释不是糟糕代码的遮羞布,混乱的逻辑不会因为被描述就变得清晰,好的注释建立在好的代码基础上。过多的注释有时会引起相反的效果,信息过多就是废话,也难以抓住重点。
《Clean Code》读书笔记——第二周的更多相关文章
- “Clean Code” 读书笔记序
最近开始研读 Robert C.Martin 的 “Clean Code”,为了巩固学习,会把每一章的笔记整理到博客中.而这篇博文作为一个索引和总结,会陆续加入各章的笔记链接,以及全部读完后的心得体会 ...
- Linux内核读书笔记第二周
什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁.用户程序在需要的时候,通过系统调用来使用硬件设备. 系统调用的存在,有以下重要的意义: 1)用户程序通过系统调用来使用硬件,而不用关 ...
- Clean Code读书笔记
第一章 整洁代码 1.编程要做什么 代码呈现了需求的细节,在某些层面上,这些细节无法被忽略或抽象,必须明确.而将需求明确到机器可以执行的细节程度,就是编程要做的事. 2.项目过程中经常遇到这样的问题: ...
- 《javascript权威指南》读书笔记——第二篇
<javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- python学习笔记第二周
目录 一.基础概念 1.模块 1)os模块 2)sys模块 2.pyc文件 3.数据类型 1)数字 2)布尔值 3)字符串 4.数据运算 5.运算符 6.赋值运算 7.逻辑运算 8.成员运算 9.身份 ...
- 《Maven实战》(许晓斌)导读(读书笔记&第二次读后感)
第一章 Maven简介 Maven是构建工具,但同时还是jar包管理工具.项目信息管理工具 与Make.Ant比较,更为先进 第二章 Maven的安装和配置 Windows和Unix上安装都很简单,下 ...
- Getting Started With Hazelcast 读书笔记(第二章、第三章)
第二章 起步 本章就相当简单粗暴了,用一个个例子说明hazelcast怎么用. 1.map,set,list这些集合类都是开箱即用的,只要从Hazelcast的实例中获取一份就行. 2.增加了Mult ...
- 《Linux内核设计与实现》读书笔记 第二章 从内核出发
一.获取内核源码 1. Git git实际上是一种开源的分布式版本控制工具. Linux作为一个开源的内核,其源代码也可以用git下载和管理 - 获取最新提交到版本树的一个副本 - $ git clo ...
随机推荐
- gdal 根据条件选择数据
- semi-join子查询优化 -- semi-join Materialization策略
semi-join Materialization 是用于semi-join的一种特殊的子查询物化技术.通常包含两种策略:1.Materialization/lookup2.Materializati ...
- PP篇10 修改工单组件行
CO_XT_COMPONENT_CHANGE 修改工单组件行 DATA : is_order_key TYPE coxt_ord_key, is_order_component_key TYPE co ...
- [LeetCode] 401. Binary Watch 二进制表
A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...
- swool教程链接汇总
参考地址: swoole教程第一节:进程管理模块(Process)-上 swoole教程第二节:基础的通讯实现-server篇-1 W3Cschool的swoole的系统教程 csdn网站swoole ...
- PKUWC2020自闭记
我才听说PKU今年对我省高二要求CSP分数>450? 我似乎丧失了一个溜去隔壁的机会? 机会是不存在的qwq THUWC3个数据结构直接送人升天 Day1 T1:感觉相邻的k!个排列是同构的可以 ...
- [07]Go设计模式:过滤器模式(FilterPattern)
目录 过滤器模式 一.简介 二.代码 三.参考链接 过滤器模式 一.简介 过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使 ...
- 细数那些Java程序员最容易犯那些错
java作为最受欢迎程度榜榜首语言,自然是广大开发者使用最多的语言.正因为有如此广泛的使用性,java开发中发生异常也比比皆是,接下来我们就来看看那些java开发中最容易出现的那些错误. 1.重复造轮 ...
- Git设定不合并的文件
一个最简单的做法,通过添加.gitattributes文件来完成 1 在要被合并的分支中设置 git config --global merge.ours.driver true设置git配置项mer ...
- web版本的用户登陆票据 FormsAuthenticationTicket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "username", DateTime.N ...