读《Clean Code 代码整洁之道》之感悟
盲目自信,自认为已经敲了几年代码,还看什么整洁之道啊。我那可爱的书架读懂了我的心思,很明事理的保护起来这本小可爱,未曾让它与我牵手
最近项目中的 bug 有点多,改动代码十分吃力,每看一行代码都带一句“这是什么XX代码啊,真XX难改”,这样持续了好几天,有天晚上坐在书房回想这几天发生的一切,仰头定睛思考,我终于和它重新确认了眼神

股票见涨你知道买了, 汽车撞墙知道拐了, 孩子死了你来奶了, 大鼻涕到嘴你知道甩了, bug难改知道愤慨了
马上翻开书,前言章节,映入眼帘的就是下面这一张图
代码质量的唯一有效度量是:WTFs(what the fuck)/minute

真的太精辟了,这不就是这几天我白天经历的吗?代码已然是 bad code 了,我们应该怎么面对这种情况呢?
每个公司的规范还不一样,本文是读书笔记,不会说明太多的代码规范,只是阐明我们应该怎样做或者抱着什么样的心态来写代码吧
如果你看到这里,我要引用书中的一句话:
第一,你是个程序员;第二;你想成为更好的程序员。我们需要更好的程序员
专业的态度
做国内项目/产品,通常都是指明deadline的,但是截止到deadline之前,需求量的多少是不固定的,说白了是“以deadline不变应需求万变”,美其名曰「敏捷」
我们经常要面对短期内开发出大量需求的请求,很可能为了快速完成这些需求,胡乱的堆叠代码,上线之后一声长叹庆幸这个功能开发的结束。过了好久,有关这个功能的需求有所变化,重新查看代码时,直接就 WTF 了......,再一看是自己写的,你说尴尬不?

如果是因为任务多胡乱叠加代码,我们就应该在接受需求的时候提出我们的看法:
过多的需求在短期内上线的代码质量不能得到保证
假如你是医生,病人要求你不用洗手就可以给他做手术,因为洗手浪费时间,你会答应吗?医生绝对会拒绝,因为你比病人更了解疾病和感染的风险。如果医生照做,那是绝对不专业的做法
作为程序员,如果遵从了不了解混乱风险经理的意愿,也是不专业的做法
“你以为可以不听经理的?不听经理的,是会被炒鱿鱼的”,经理能否听的进去,我们都要提出我们的看法。提出多次还被无视,也不要灰心丧气,继续提出我们专业的看法... untile die, 为了部落

如果你有底线,守住就好;如果没有,适应就好。只为很久之后看到代码说 WTF 时,避免主角是自己的尴尬
我们是作者
Javadoc 中的@author字段告诉我们自己是什么身份,我们是作者。如果类上没有标注日期和作者,alibaba代码检查工具会给出提示,就像这样:

这里建议大家在 IDE 中安装该插件,如果你不知道作为作者应有的规范,那就让这个插件辅助你吧

据统计,读代码与写代码花费的时间比例超过 10:1, 因为我们在写新代码时会一直在读旧代码,项目越到后期这个比例越明显
我们是作者,就有责任和读者做好沟通。每次写代码的时候,记得自己是作者,要为评判你工作的读者写代码.

这些读者可能是你现在组内的伙伴,也可能是将来要接管你的任务的新伙伴,避免别人嘴里 WTF 的主角是你,定期 Review 自己的代码,你定会发现可以改善的地方,比如用策略模式更改过多的 if else等,代码整洁了,又学会了设计模式,岂不是两全其美
心有余,力要足
很多朋友说,我也想写出整洁的代码,但是目前实力不允许啊。

写出整洁的代码的功力不是一蹴而就的,需要持续不断的学习和修正
学会设计模式,了解 RESTful 接口规范,了解命名规范,注释,函数大小等等太多的东西都是书写出整洁代码必不可少的知识,我们该怎么办?
还记得小时候写作文的词藻不够用,老师让摘抄好文好句。如果程序写的不够整洁,我们可以慢慢学习和模仿好的写法与设计,慢慢改善和积累,有朝一日肯定能写出高分作文的
不做破窗效应第一人
不要说现在的代码很烂了,没必要再改善了,如果你是这样的心态,即便一个全新的项目开始让你去做,你也很可能会成为第一个打碎玻璃,带来破窗效应的人。
如果严重一点说,大家都知道你写的代码带给别人的是一种负担,你可能很难有开始一个全新项目的机会了

如果同事因改善你的代码带来了一些意外的影响,请你不要抱怨甩锅,这些改善就是修复玻璃的开始,终将会给团队带来极大的好处
总结
编写整洁代码的路途漫漫,我们一起求索,推荐大家看下面这两本书,你一定有有自己的发现,让我们悉心照料我们写的每一行代码
灵魂追问
- 工作上你接到过什么奇葩要求?
- 工作中遇到了哪些无奈或者你觉得XX的事?
- 你是怎么应对那些不好的问题的?
欢迎在留言区讨论,你们项目中的情况,你是怎么看待代码整洁这个问题的

读《Clean Code 代码整洁之道》之感悟的更多相关文章
- Clean Code 代码整洁之道
军规:让营地比你来时更干净. 整洁代码 Leblanc : Later equals never. (勒布朗法则:稍后等于永不) 对代码的每次修改都影响到其他两三处代码. 修改无小事. 如同医生不能遵 ...
- 《代码整洁之道》(Clean Code)- 读书笔记
一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...
- 2015年第11本:代码整洁之道Clean Code
前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...
- 读<<代码整洁之道>>的感想
花去了近一周的时间浏览一下这本书.总体感觉这本书写得不错. 我发现自己以前写的代码时多么的糟糕.有很多改进之处... 同时我也发现写出优秀的代码不易.优秀的代码不仅仅易读,并且易修改,易维护,程序易维 ...
- Programming好文解读系列(—)——代码整洁之道
注:初入职场,作为一个程序员,要融入项目组的编程风格,渐渐地觉得系统地研究下如何写出整洁而高效的代码还是很有必要的.与在学校时写代码的情况不同,实现某个功能是不难的,需要下功夫的地方在于如何做一些防御 ...
- 《代码整洁之道》ch1~ch4读书笔记 PB16110698 (~3.8 第一周)
<代码整洁之道>ch1~ch4读书笔记 <clean code>正如其书名所言,是一本关于整洁代码规范的“教科书”.作者在书中通过实例阐述了整洁代码带来的种种利处以及混乱代码 ...
- 免费电子书:C#代码整洁之道
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:<Clean Code(代码整洁之道)>是一本经典的著作,那么对于编写整洁 ...
- Python代码整洁之道(一)
很多新手在开始学一门新的语言的时候,往往会忽视一些不应该忽视的细节,比如变量命名和函数命名以及注释等一些内容的规范性,久而久之养成了一种习惯.对此呢,我特意收集了一些适合所有学习 Python 的人, ...
- <读书笔记> 代码整洁之道
概述 1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一 ...
随机推荐
- Android CTS中neverallow规则生成过程
CTS里面SELinux相关测试中neverallow测试项占绝大多数,Android系统开发者都应该知道,在修改sepolicy时,需要确保不能违反这些neverallow规则,不然会过不了CTS. ...
- shellcode超级反杀
shellcode超级免杀 作者声明: 本文章属于作者原创,不能转载,违反网络安全法自己承担.这里只供学习使用. 日期: 2019-12-30 我试过了电脑管家,火绒安全,360....一系列杀毒软件 ...
- TCP/IP|| 建立连接或终止
1.TCP是一个面向连接的协议,在双方发送数据时需要之间建立连接. 当使用telnet命令是连接对应的端口产生TCP连接,通过tcpdump命令查看TCP报文段的输出 源>目的:标志 在标识中有 ...
- redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
redis 和 memcached 有啥区别? redis 支持复杂的数据结构 redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作.如果需要缓存能够支持更复杂的结构 ...
- 使用app-inspector时报错connect ECONNREFUSED 127.0.0.1:8001的解决方案
在使用 app-inspector -u udid时,报错如图所示 输入如下命令即可解决 npm config set proxy null 再次启动app-inspector即可成功
- 010 Ceph RGW对象存储
一.对象存储 1.1 介绍 通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据 对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问 ...
- NET Core 3.1 PATCH HTTP 的使用注意事项
使用Postman请求示例: 一.在Headers要声明请求类型Content-Type 二.body提交要使用raw,且声明为json格式传输 三.如果有authorization验证还需要带上(如 ...
- 【题解】P1712 [NOI2016]区间(贪心+线段树)
[题解]P1712 [NOI2016]区间(贪心+线段树) 一个observe是,对于一个合法的方案,将其线段长度按照从大到小排序后,他极差的来源是第一个和最后一个.或者说,读入的线段按照长度分类后, ...
- 洛谷P1020 导弹拦截 题解 LIS扩展题 Dilworth定理
题目链接:https://www.luogu.com.cn/problem/P1020 题目大意: 给你一串数,求: 这串数的最长不上升子序列的长度: 最少划分成多少个子序列是的这些子序列都是不上升子 ...
- 分享在开发多终端使用比较多的Adb命令
分享在开发多终端或者涉及PC-Android的传输使用比较多的Adb命令 查看连接的设备 adb devices 列出设备安装的软件包 adb shell pm list packages 使用这个方 ...