语义式(semantic)、声明式(declarative)思维写代码
- 代码写的像markdown文章,函数名是对函数目的的概括
- 给一对表达式和函数,赋予语义,比如triggered()和reset()
- 模块和类的思想,把一类的东西放在一个类里面,隔离,让它可以独立测试
- 代码逻辑读起来应该越来越像问题域的说明书
- 从上往下写代码,规划依赖
清晰表达
- 代码应该专注
- 清晰地表达它的用途,适用于某个可以重用的公共model,还是只是用于当前逻辑
依次考虑:
- 这段代码想表达什么含义?
- 它有没有办法说得更清楚一点?
- 如果它是清晰表达的问题,你需要把那些碍事的代码段抽象出来。
- 若代码还是有点混乱,那可能是没有清晰思考的产品的功能架构,需要在设计层面返工。
组织代码模块
- 画出依赖网格,依赖不要跨越抽象层次
- 把“变化”的影响限制在最小,尽量控制在周围依赖,临近层次,而不是给整个应用带来颠覆的灾难。
测试驱动开发
- 首先思想很重要,实际应用另外考虑,哪怕你从来不写测试用例
- 思想就是“优先考虑代码的使用需求”(包括功能、过程、接口等)//类似声明式
重构代码可能并不会带来更好地可维护性和效率
- 重构会浪费大量时间和精力
- 不如完全重新架构这个应用,重新规划依赖和语义式编程