代码整洁之道
链接: https://pan.baidu.com/s/1w-YwxAtS9KYOqJK-1SBQrw 提取码: u7vi 复制这段内容后打开百度网盘手机APP,操作更方便哦
序
前言
关于封面
第1章 整洁代码
1.1要有代码
1.2糟糕的代码
1.3混乱的代价
1.3.1华丽新设计
1.3.2态度
1.3.3谜题
1.3.4整洁代码的艺术
1.3.5什么是整洁代码
1.4思想流派
1.5我们是作者
1.6童子军军规
1.7前传与原则
1.8小结
1.9文献
2有意义的命名
2.1介绍
2.2名副其实
2.3避免误导
2.4做有意义的区分
2.5使用读得出来的名称
2.6使用可搜索的名称
2.7避免使用编码
2.7.1匈牙利语标记法
2.7.2成员前缀
2.7.3接口和实现
2.8避免思维映射
2.9类名
2.10方法名
2.11别扮可爱
2.12每个概念对应一个词
2.13别用双关语
2.15使用源自所涉及问题领域的名称
2.16添加有意义的语境
2.17不要添加没用的语境
2.18最后的话
第3章 函数
3.1短小
3.2只做一件事
3.3每个函数一个抽象层级
3.4switch语句
3.5使用描述性的名称
3.6函数参数
3.6.1一元函数的普遍形式
3.6.2标识参数
3.6.3二元函数
3.6.4三元函数
3.6.5参数对象
3.6.6参数列表
3.6.7动词与关键字
3.7无副作用
3.8分隔指令与询问
3.9使用异常替代返回错误码
3.9.1抽离try/catch代码块
3.9.2错误处理就是一件事
3.10别重复自己
3.11结构化编程
3.12如何写出这样的函数
3.13小结
第4章 注释
4.1注释不能美化糟糕的代码
4.2用代码来阐述
4.3好注释
4.3.1法律信息
4.3.2提示信息的注释
4.3.3对意图的解释
4.3.4阐释
4.3.5警示
4.3.6TODO注释
4.3.7放大
4.3.8公众API中的javadoc
4.4坏注释
4.4.1喃喃自语
4.4.2多余的注释
4.4.3误导性注释
4.4.4循规式注释
4.4.5日志式注释
4.4.6废话注释
4.4.7可怕的废话
4.4.8能用函数或者变量时就别用注释
4.4.9位置标记
4.4.10括号后面的注释
4.4.11归属与署名
4.4.12注释掉的代码
4.4.13HTML注释
4.4.14非本地信息
4.4.15信息过多
4.4.16不明显的联系
4.4.17函数头
4.4.18非公共代码中的javadoc
5格式
5.1格式的目的
5.2垂直格式
5.2.1向报纸学习
5.2.2概念间垂直方向上的区隔
5.2.3垂直方向上的靠近
5.2.4垂直距离
5.2.5垂直顺序
5.3横向格式
5.3.1水平方向上的区隔与靠近
5.3.2水平对齐
5.3.3缩进
5.3.4空范围
5.4团队规则
6对象和数据结构
6.1数据抽象
6.2数据、对象反对称性
6.3德墨忒尔法则
6.3.1火车失事
6.3.2混杂
6.3.3隐藏结构
6.4数据传送对象
第7章 错误处理
7.1使用异常而不是返回码
7.2先写try-catch-finally语句
7.3使用不可控异常
7.4给出异常发生的环境说明
7.5依照调用者需要定义异常类
7.6定义常规流程
7.7别返回null值
7.8别传递null值
7.9总结
8边界
8.1使用第三方代码
8.2浏览和学习边界
8.4学习性测试的好处不只是免费
8.5使用尚不存在的代码
8.6整洁的边界
第9章 单元测试
第10章 类
10.1类的组织
10.2类应该短小
10.2.1单一职责原则
10.2.2内聚
10.2.3保持内聚性就会得到许多短小的类
10.3为了修改而组织
11系统
11.1如何建造一个城市
11.2将系统的构造与使用分开
11.2.1分解main
11.2.2工厂
11.2.3依赖注入
11.3扩容
11.4java代理
11.5纯JAVA AOP框架
11.6AspectJ方面
11.7测试驱动系统框架
11.8优化决策
11.9明智使用添加了可论证价值的标准
11.10系统需要领域特定的语言
第12章 迭代
12.1通过迭代设计达到整洁目的
12.2运行所有测试
12.3简单设计规则2-4:重构
12.4不可重复
12.5表达力
12.6尽可能少的类和方法
第13章 并发编程
第14章 逐步改进
第15章 junit内幕
第16章 重构serialdate
第17章 味道与启发
17.1注释:不恰当的信息、废弃的注释、冗余注释、糟糕的注释、注释掉的代码
17.2环境:需要多步才能实现的构建、需要多步才能做到的测试
17.3函数:过多的参数、输出参数、标识参数、死函数
17.4一般性问题:一个源文件中存在多种语言、明显的行为未被实现、不正确的边界行为、忽视安全、重复、在错误的抽象层级上的代码、基类依赖于派生类、信息过多、死代码、垂直分隔、前后不一致、混淆视听、人为耦合、特性依赖、选择算子参数、灰色的意图、位置错误的权责、不恰当的静态方法、使用解释性变量、函数名称应该表达其行为、理解算法、把逻辑依赖改为物理依赖、用多态替代if/else或者switch/case、遵行标准约定、用命名常量替代魔术数、准确、结构胜过约定、封装条件、避免否定性条件、函数只该做一件事情、掩蔽时序耦合、别随意、封装边界条件、函数应该只在一个抽象层级上、在较高层级放置可配置的数据、避免传递浏览
17.5JAVA:通过使用通配符避免过长的导入清单、不要继承常量、常量VS枚举
17.6名称:采用描述性的名称、名称应该与抽象层级相符、尽可能使用标准命名法、没有歧义的名称、为较大作用范围选用较长名称、避免编码、名称应该说明副作用
17.7测试:测试不足、使用覆盖率工具、别略过小测试、被忽略的测试就是对不确定事务的疑问、测试边界条件、全面测试相近的缺陷、测试失败的模式有启发性、测试覆盖率的模式有启发性、测试应该快速
相关阅读
从票房,讨论热度(赞或黑都算)来说,郭敬明的《小时代》系列电影无疑是一个现象级作品,郭小四自己赚得盆满钵满的同时,也捧红了一众演员,更
所谓“超级用户思维”,就是品牌不光要关心自己有多少用户,更要关心有多少“超级用户”,也就是愿意为品牌付费的用户。以下是数字化转
Doing and Being, How can I be a Agilist?敏捷的意识与心智敏捷管理关注什么?在项目管理领域,无论是敏捷教练,还是传统的项目经理,我
说起陌生人社交,大家第一想到的基本不是陌陌就是探探,这两款产品几乎牢牢占据了用户的心智。而今年年初,陌陌以超过6亿美金收购探探,
接着上一章,这一章讲“错误处理”: 错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。 一、使用异常而非返回码很久以前,许多语