程序员修炼之道阅读笔记2
第三章 基本工具
14 纯文本的威力
用纯文本来存储数据?
哦。
15 Shell游戏
没什么好说的,奇技淫巧。
16 强力编辑
内容有些过时了。IDE是首要的,vi能掌握固然好,不过其他编辑器如atom和vs code都是不错的选择,容易配置上手。
17 源码控制
没什么好说的。
18 调试
Debug除了需要经验,更需要端正的心态。
19 文本操纵
这一节没理解它真正的含义,表面看来是讲可以使用程序来读取操作文本的信息,来加快工作效率,但是到底指什么呢?不明白。不过倒是在工作上,多次嫌手工执行一些转换数据库工作麻烦,而写一些简短的工具来做批处理,效果也很不错。
20 代码生成器
也是DRY原则的体现,不过好的代码生成器对代码能力有极高的要求,希望以后有机会可以接触到。
21 按合约设计
每个method或者subroutine都会做某件事情,在开始做事之前,它需要对世界的状态有种期望,也应该陈述系统结束时的状态。『前条件』,『后条件』,『类不变项』。
22 死程序不说谎
提早崩溃是件好事情!
23 断言式编程
断言的价值不应只体现在unit test里面。
24 何时使用异常
仅仅在异常的时候使用异常。听起来好像一句废话,不过确实见过有的代码里把异常当作goto一样使用,会极大破坏程序逻辑。
25 怎样配平资源
有始有终。打开资源以后必须要记得关闭,包括文件,内存,io。
第五章 弯曲或折断
26 解耦与得墨忒耳法则
尽可能写羞怯的代码,意思是不要让代码轻易暴露自己,不与太多人打交道。
得墨忒耳法则:方法只能调用(1)它自身 (2)传入的参数 (3)方法内创建的对象 (4)直接持有的类的对象。
27 元程序设计(metadata)
metadata的意思是关联数据,也就是一些细节数据。比如一些配置信息,调节参数,用户偏好之类的数据。使用Metadata的设计可以极大的增强设计的灵活性。
把抽象放进代码,细节放进元数据,要配置,不要集成在代码中。
28 时间耦合
程序应该为并发做好准备。分析工作流,改善并发性。
在编程的时候,要容许并发,考虑任何时间和次序上的依赖。分析出完成合理的工作流有助于规避时间耦合。
29 它只是视图
发布订阅模式:发布者持续发布数据,订阅者只订阅自己感兴趣的发布者,并遵循发布者的协议聆听数据。
MVC:不用多说了吧。
30 黑板
黑板方式的编程之前没有听说过。我的理解感觉这个模式很像redis之类的缓存系统,并且被多个client以同一的接口(键值对的读写)的形式访问。
黑板上有形形色色的各式各样的信息,但是是能以一种方式来获得,就是『看黑板』(单一接口)。
第六章 当你编码时
31 靠巧合编程
当你写代码时,首先明确你懂得你要写的东西,而不要『写写试试』。有可能你写出的程序只在某些场景下运行正确,但是在一些corner case中会失败,这就是靠巧合编程了。写代码难就难在对付corner case,有时不得不做出一些妥协。
32 算法速率
这里介绍很少,仅仅只是算法世界的沧海一粟。首先要会衡量程序的算法复杂度O,懂得几种常用算法的O是多少,懂得O(N2), O(log n), O(n)等等算法速率的区别。
33 重构
读Martin Fowler的《重构》吧。重构应该是随时随刻的。
34 易于测试的代码
别废话,多写测试。写测试也是一个程序自省的过程,不容易写测试的程序往往是设计很差的程序。
35 邪恶的向导
知其然,知其所以然。

浙公网安备 33010602011771号