《代码精进之路:从码农到工匠 》:
链接:https://pan.baidu.com/s/1naOeBlMnc3axGT3piD7euw
提取码:p4ak
命名
好的命名要考虑事物本质,沿袭认知习惯,遵循编程规范,并且能尽可能自我表达。
代码即文档,好的代码能自我表达。
变量名应该是名词,在其作用域内便于区分其含义。
字面值应该定义成常量,提高可搜索性。
函数命名是要体现业务语义上要做什么,而不是技术细节。
类是数据和操作的封装,分为实体类和辅助类,实体类紧贴业务,辅助类辅助实体类实现业务,实体类命名体现业务含义,辅助类名称为对应实体加后缀名,后缀名表明其辅助范围,不能太笼统。
包是对类的分组,名称分隔符间为一个单词。
模块名体现架构层次。
统一业务语言和技术语言,保持概念的表述词唯一,减少沟通障碍。
自明的代码
通过中间变量名称,将计算过程显性化表达出来。
用设计模式通用命名表示设计意图。
注释不要复述功能实现细节,要解释意图。
规范
编码规范
编码风格一致,可以减少认知成本。
空行可以分隔不同功能的代码。
日志规范
ERROR表示自己无法恢复的致命错误,要打印异常堆栈、上下文信息。
WARN表示可预知的业务异常。
INFO表示业务执行过程和状态。
DEBUG表示调试信息,线上关闭。
异常规范
异常处理不统一的复杂性:
-
把正常逻辑和异常混杂在一起,影响可读性。
-
异常处理和错误码混乱
设定业务异常和系统异常,均为unchecked exception。
checked exception 破坏了开闭原则。
业务代码只管抛出异常,用AOP 统一处理异常,打印日志,返回错误码。
函数
用函数将逻辑显性化表达出来。
函数参数不要超过三个。
函数要短小而职责单一。
精简辅助代码,凸显业务码。
组合函数模式:公有函数体现执行概要,实现细节放在私有函数里。组合函数内抽象层次必须在一个层次。
设计原则
SOLID:
- 单一指责原则
- 开闭原则
- 里氏代换原则
- 接口隔离原则
- 依赖倒置原则
instanceOf 和强制类型转换,破坏了里氏代换原则。
避免子类覆盖父类方法,会破坏里氏代换原则。
不要提前设计,某个功能代码,重复出现3次以内,直接复制,3次以上再进行抽象重构。
真正的简单,不是不思考,而是先发散思维后收敛,自下而上的归纳,自上而下的设计,把握住问题的核心。
模型
模型是对现实世界中关注的方面进行简化和抽象。
物理模型是对拥有体积和质量的物理形态的抽象。
数学模型可以定量的描述事物间的关系。
概念模型将现实世界中物体抽象为信息结构,与具体实现无关。
思维模型解决问题的套路。
思想
抽象就是寻找事物的共性,共性越宽泛,包涵的事物越广泛,抽象层次就越高,反之抽象层次越低。
分治:
- 分治算法
- 归并排序
- 二分查找
- 函数分解
- 分治模式
- 职责链模式
- 分层设计
- 架构分层
- 网络分层
- 横切纵切
- 数据分库
网友评论