代码精进之路_Note

《代码精进之路:从码农到工匠 》:

链接:https://pan.baidu.com/s/1naOeBlMnc3axGT3piD7euw
提取码:p4ak

image-20201219123154450

命名

好的命名要考虑事物本质,沿袭认知习惯,遵循编程规范,并且能尽可能自我表达。

代码即文档,好的代码能自我表达。

变量名应该是名词,在其作用域内便于区分其含义。

字面值应该定义成常量,提高可搜索性。

函数命名是要体现业务语义上要做什么,而不是技术细节。

类是数据和操作的封装,分为实体类和辅助类,实体类紧贴业务,辅助类辅助实体类实现业务,实体类命名体现业务含义,辅助类名称为对应实体加后缀名,后缀名表明其辅助范围,不能太笼统。

包是对类的分组,名称分隔符间为一个单词。

模块名体现架构层次。

统一业务语言和技术语言,保持概念的表述词唯一,减少沟通障碍。

自明的代码

通过中间变量名称,将计算过程显性化表达出来。

用设计模式通用命名表示设计意图。

注释不要复述功能实现细节,要解释意图。

规范

编码规范

编码风格一致,可以减少认知成本。

空行可以分隔不同功能的代码。

日志规范

ERROR表示自己无法恢复的致命错误,要打印异常堆栈、上下文信息。

WARN表示可预知的业务异常。

INFO表示业务执行过程和状态。

DEBUG表示调试信息,线上关闭。

异常规范

异常处理不统一的复杂性:

  • 把正常逻辑和异常混杂在一起,影响可读性。

  • 异常处理和错误码混乱

设定业务异常和系统异常,均为unchecked exception。

checked exception 破坏了开闭原则。

业务代码只管抛出异常,用AOP 统一处理异常,打印日志,返回错误码。

函数

用函数将逻辑显性化表达出来。

函数参数不要超过三个。

函数要短小而职责单一。

精简辅助代码,凸显业务码。

组合函数模式:公有函数体现执行概要,实现细节放在私有函数里。组合函数内抽象层次必须在一个层次。

设计原则

SOLID:

  • 单一指责原则
  • 开闭原则
  • 里氏代换原则
  • 接口隔离原则
  • 依赖倒置原则

instanceOf 和强制类型转换,破坏了里氏代换原则。

避免子类覆盖父类方法,会破坏里氏代换原则。

不要提前设计,某个功能代码,重复出现3次以内,直接复制,3次以上再进行抽象重构。

真正的简单,不是不思考,而是先发散思维后收敛,自下而上的归纳,自上而下的设计,把握住问题的核心。

模型

模型是对现实世界中关注的方面进行简化和抽象。

物理模型是对拥有体积和质量的物理形态的抽象。

数学模型可以定量的描述事物间的关系。

概念模型将现实世界中物体抽象为信息结构,与具体实现无关。

思维模型解决问题的套路。

思想

抽象就是寻找事物的共性,共性越宽泛,包涵的事物越广泛,抽象层次就越高,反之抽象层次越低。

分治:

  • 分治算法
    • 归并排序
    • 二分查找
  • 函数分解
  • 分治模式
    • 职责链模式
  • 分层设计
    • 架构分层
    • 网络分层
  • 横切纵切
    • 数据分库
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容