• ((6436c79d-c0ca-499f-a330-2c7ddd0fbde6)) ((6436c78f-318d-40f4-8bab-3db31e19923b))

CONTENTS

  • 整洁代码
    • 要有代码
    • 糟糕的代码
    • 混乱的代价
      • 华丽新设计
      • 态度
      • 迷题
      • 整洁代码的艺术
      • 什么是整洁代码
    • 思想流派
    • 我们是作者
    • 童子军军规
    • 前传与原则
    • 小结
    • 文献
  • 有意义的命名
    • 介绍
    • 名副其实
    • 避免误导
    • 做有意义的区分
    • 使用读得出来的名称
    • 使用可搜索的名称
    • 避免使用编码
      • 2.7.1匈牙利语标记法
      • 成员前缀
      • 接口和实现
    • 避免思维映射
    • 类名
    • 方法名
    • 别扮可爱
    • 每个概念对应一个词
    • 别用双关语
    • 使用解决方案领域名称
    • 使用源自所涉问题领域的名称
    • 添加有意义的语境
    • 不要添加没用的语境
    • 最后的话
  • 函数
    • 短小
    • 只做一件事
    • 每个函数一个抽象层级
    • switch语句
    • 使用描述性的名称
    • 函数参数
      • 一元函数的普遍形式
      • 标识参数
      • 二元函数
      • 三元函数
      • 参数对象
      • 参数列表
      • 动词与关键字
    • 无副作用
    • 分隔指令与询问
    • 使用异常替代返回错误码
      • 抽离Try/Catch代码块
      • 错误处理就是一件事
      • Error.java依赖磁铁
    • 别重复自己
    • 结构化编程
    • 如何写出这样的函数
    • 小结
    • SetupTeardownIncluder程序
    • 文献
  • 注释
    • 注释不能美化糟糕的代码
    • 用代码来阐述
    • 好注释
      • 法律信息
      • 提供信息的注释
      • 对意图的解释
      • 阐释
      • 警示
      • TODO注释
      • 放大
      • 公共API中的Javadoc
    • 坏注释
      • 喃喃自语
      • 多余的注释
      • 误导性注释
      • 循规式注释
      • 日志式注释
      • 废话注释
      • 可怕的废话
      • 能用函数或变量时就别用注释
      • 位置标记
      • 括号后面的注释
      • 归属与署名
      • 注释掉的代码
      • HTML注释
      • 非本地信息
      • 信息过多
      • 不明显的联系
      • 函数头
      • 非公共代码中的Javadoc
      • 范例
    • 文献
  • 格式
    • 格式的目的
    • 垂直格式
      • 向报纸学习
      • 概念间垂直方向上的区隔
      • 垂直方向上的靠近
      • 垂直距离
      • 垂直顺序
    • 横向格式
      • 水平方向上的区隔与靠近
      • 水平对⻬
      • 缩进
      • 空范围
    • 团队规则
    • 鲍勃大叔的格式规则
  • 对象和数据结构
    • 数据抽象
    • 数据、对象的反对称性
    • 得墨忒耳律
      • 火⻋失事
      • 混杂
      • 隐藏结构
    • 数据传送对象
    • 小结
    • 文献
  • 错误处理
    • 使用异常而非返回码
    • 先写Try-Catch-Finally语句
    • 使用不可控异常
    • 给出异常发生的环境说明
    • 依调用者需要定义异常类
    • 定义常规流程
    • 别返回null值
    • 别传递null值
    • 小结
    • 文献
  • 边界
    • 使用第三方代码
    • 浏览和学习边界
    • 学习log4j
    • 学习性测试的好处不只是免费
    • 使用尚不存在的代码
    • 整洁的边界
    • 文献
  • 单元测试
    • TDD三定律
    • 保持测试整洁
    • 整洁的测试
      • 面向特定领域的测试语言
      • 双重标准
    • 每个测试一个断言
    • F.I.R.S.T.
    • 小结
    • 文献
    • 类的组织
    • 类应该短小
      • 单一权责原则
      • 内聚
      • 保持内聚性就会得到许多短小的类
    • 为了修改而组织
    • 文献
  • 系统
    • 如何建造一个城市
    • 将系统的构造与使用分开
      • 分解main
      • 工厂
      • 依赖注入
    • 扩容
    • Java代理
    • 纯Java AOP框架
    • AspectJ的方面
    • 测试驱动系统架构
    • 优化决策
    • 明智使用添加了可论证价值的标准
    • 系统需要领域特定语言
    • 小结
    • 文献
  • 迭进
    • 通过迭进设计达到整洁目的
    • 简单设计规则1:运行所有测试
    • 简单设计规则2〜4:重构
    • 不可重复
    • 表达力
    • 尽可能少的类和方法
    • 小结
    • 文献
  • 并发编程
    • 为什么要并发
    • 挑战
    • 并发防御原则
      • 单一权责原则
      • 推论:限制数据作用域
      • 推论:使用数据复本
      • 推论:线程应尽可能地独立
    • 了解Java库
    • 了解执行模型
      • 生产者-消费者模型
      • 读者-作者模型
      • 宴席哲学家
    • 警惕同步方法之间的依赖
    • 保持同步区域微小
    • 很难编写正确的关闭代码
    • 测试线程代码
      • 将伪失败看作可能的线程问题
      • 先使非线程代码可工作
      • 编写可插拔的线程代码
      • 编写可调整的线程代码
      • 运行多于处理器数量的线程
      • 在不同平台上运行
      • 装置试错代码
      • 硬编码
      • 自动化
    • 小结
    • 文献
  • 逐步改进
    • Args的实现
    • Args:草稿
      • 所以我暂停了
      • 渐进
    • 字符串参数
    • 小结
  • JUnit内幕
    • JUnit框架
    • 小结
  • 重构SerialDate
    • 首先,让它能工作
    • 让它做对
    • 小结
    • 文献
  • 味道与启发
    • 注释
    • 环境
    • 函数
    • 一般性问题
    • Java
    • 名称
    • 测试
    • 小结
    • 文献
  • ((6436c5b7-800d-4bb1-a1dd-e4bba28f53f6))