程序员修炼之道阅读笔记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 邪恶的向导

知其然,知其所以然。

posted @ 2021-11-01 23:14  禁小呆  阅读(30)  评论(0)    收藏  举报