代码整洁之道
代码整洁是基本的职业道德。
做人要设身处地,写代码时候是否也做到了?是否不会给后来者遗留下麻烦?扪心自问,我无法回答。
这本书是很有用的工具书,反思自己,指明写好代码的途径:好名字,清晰的函数,不写乱七八糟的函数。
第二章 名字
给代码儿子选个好名儿:变量名需要注释,就不是好名字。
避免误导:O0l1?傻傻分不清楚。长点儿心,别给自己和别人添麻烦。
能读出来的名字,有意义的区分:genymdhms 获取年月日时分秒?什么破名字。getAccount getAccounts getAccountInfo ,到底该用哪一个?
可搜索的名称:常量指代magic number的意义所在,可以迅速查出来都在哪里用到了。
类名是名词;方法名是动词或动词短语。使用通用统一的名称,别卖萌,别自以为聪明。
起个好名字,全家感谢你!时时照拂自己创建的东西,用心是最珍贵的资源。
第三章 函数
好的函数就是短的函数:每个函数只说一件事,然后依序把你带到下一个函数。if else while 中的代码块应该只有一行。好的函数位于不同的抽象层级,可自顶向下阅读。相关函数放在一起,前一个导引指向下一个。抽离try catch 避免扰乱代码结构。
大师级程序员把系统当作故事讲,而不是当作程序写。
第四章 注释
好的注释:法律信息;解释意图;警示。不要写多余的注释,不要写可怕的废话。注释掉的代码就是渣,一定要删除!
第五章 格式
向报纸学习排版。
第七章 错误处理
错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。定义异常,最重要的考虑应是它们如何被捕获。打包异常,只输出一种类型异常给外界。别返回或传递null值,返回空对象如Collections.emptyList(),保持代码整洁。
第8、9章 边界和测试
学习性测试,去了解第三方组件。保持测试整洁。测试代码和生产代码一样重要。测试的first原则:Fast、Independent、Repeatable、Self-Validating、Timely。
第十章 短小的类
单一权责;类应该足够小;
第十一章 系统
一开始就做对系统,纯属神话。反之,我们应该只去实现今天的用户故事。 互联网用户群可能暴增,也可能完全没有用户,做好扩容想法很重要。
软件系统类似乡镇变城市,类似物理系统,都可以递增地增长。需要做好适当的切分。
第十二章 并发
为什么并发:把目的和时机做分解,改善系统吞吐量和结构。
执行模型
基本定义: 限定资源、互斥、线程饥饿、死锁、活锁。
基本模型:生产者-消费者模型、读者-作者模型、宴席哲学家模型。保持同步区域微小。不要把系统错误归咎于偶然事件:宇宙射线,硬件问题等等。先使非线程代码可运行。
第十四章 逐步改进
要想写出整洁代码,必须先写肮脏代码,然后再清理它。多数新手写出能工作的程序,就转移到下一个任务上,能工作的程序最终也只是能工作,这是一种自毁行为。