【《代码不朽》读书笔记】
第一章:简介
- “简单”原则;
- 对每次提交负责。
第二章:函数要短
【要求】<=15行
【做法】
- 提取方法
- 替换为方法对象
第三章:逻辑分支要少
【要求】<4个if、for等分支
【做法】
- 处理链式条件语句(链式if、else或switch情况):(1)善用map;(2)多态——>类
- 处理嵌套语句:(1)使用“卫语句”,即依次多个带return的if;(2)抽取成函数。
第四章:避免代码“重复”
【要求】>6行的,要处理
【做法】
- 提取到“父类”
- 提取到“工具类”
【工具】
P45讲到工具
- “CPD”是有名的工具:检查代码重复。
- 其中包含名为“PMD”的代码分析工具。
- 可运行在eclipse中或通过Maven运行
第五章:保持接口简单
【要求】入参<=4个
【做法】
- 分离职责,拆分为多个方法组合使用
- 用对象参数
- 为默认值情况提供方法重载
- 方法对象法
第六章:分离“类”的关注点
【要求】避免“大”类型
【做法】
- 分离职责,“一个类”——>多个小类
- 用接口隐藏背后的实现
- 用第三方框架和库来提高质量。
【补充知识】
- 接口可“继承”
- 接口是“方法集”,可封闭方法集范围。
第七章:架构组件松耦合
【要求】基于“接口”编程。
【做法】
- 抽象工厂模式
- 依赖注入框架
- 基于接口的多态
第八章:保持组件之间的平衡
【要求】子系统9个左右,一般6-12个
【好处】
- 方便查找和分析代码
- 隔离维护造成的影响。
【做法】
- 明确系统边界。
第九章:保持小规模代码库
【要求】代码库越小越好
【好处】
- 大代码库容易失败
- 大代码库难以维护
- 大代码库bug密度更高。
【做法】
- 功能层面:控制需求蔓延;功能标准化(以利于代码复用)
- 技术层面:不要复制!重构;尽量使用第三方库
【补充知识】
- UI行为——jquery
- 数据库访问——hibernate
- 日志——slf4j
- 工具——google guava
- java时间框架——Joda,提供了大量单元测试
- 我的补充:第三方库要用好:1)源码级别掌握的;2)改动人家有风险,升级人家版本时要用工具比对差异,且容易让其他人误解。
第十章:自动化
【要求】尤其“自动化测试”,自动化“开发”,“部署”
【做法】
- JUnit
- 测试驱动开发
【工具】
- Mocking框架(p112):Mockito,EasyMock
- 测试框架(p107):单元测试JUnit,自动化端到端测试Selenium,SoapUI关注WebService,Apache jMeter测试高压下java程序性能。
- 统计覆盖率(p114):Maven插件Cobertura,eclipse插件EelEmma
第十一章:代码简洁
【要求】代码要简洁
【做法】
- 提交代码前,代码要没有坏味道。
- 不写坏注释(p120说了坏注释体现的问题)
- 删掉被注释的代码
- 删掉废弃代码(包括注释中最好别有代码,触发java函数那种示例注释)
- 不要过长的标识符
- 不要用魔术常量
- 正确使用异常:捕获一切异常,最终得有处理;捕获特定异常来提供细分过的信息;转成业务语言再展示给操作员。
第十二章:后续事宜
- 要实践
- 低层级原则高于高层级
- 对每次提交负责!
- 下本书:《构件软件团队》