zoukankan      html  css  js  c++  java
  • 【读书笔记】《代码不朽》

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