代码整洁之道学习笔记

本文摘录了关于代码整洁的几个重要章节,包括函数的短小与参数管理、错误处理的可控性和边界设计、类的内聚与单一责任原则,以及系统中的延迟初始化和AOP切面处理。旨在通过遵循这些原则提高开发效率。
摘要由CSDN通过智能技术生成

        工作后在写服务时发现总是不知道什么样的代码是好代码,导致开发效率变低,所以看了下代码整洁之道,希望能获得些开发原则,提升自己的开发效率,本文摘取了文章部分内容,没有全部看完,本着按需学习的原则进行了学习和理解。

        文章目录如下,选取了其中第3、7、8、10、11章,做了些笔记        

第3章 函数

  1. 短小

  2. 每个函数负责一个抽象层级的功能

    1. 比如一个函数中最好不要出现抽象后的函数,同时还有和字符串,db直接交互的代码片段,这样这样的后果是该函数同时出现抽象度高和低的代码,很难理解

  3. 自顶向下的阅读顺序,函数按照引用顺序从上往下分布(如函数一,引用了函数二、三,函数一下紧跟函数二,接着是函数三)

  4. 对于switch语句,如果出现的次数很多,可以用抽象工厂的方式,创建多态对象,对于一些可共同抽象的功能,可以借由接口的方式来供不同对象实现和调用

  5. 关于参数

    1. 如果函数入参是三个及以上,说明可能需要一个封装类来包含参数

      eg:

    2. 参数列表,如果入参的数量可能有变化,采用可变参数列表实现

  6. 使用异常返回替代错误码

第7章 错误处理

  1. 可控异常,即在函数命名处定义可能抛出的异常,然后进行检查判断抛出异常类型是否属于该异常。可能会带来一个缺点:底层的异常类型变化会导致所有引用该底层代码 且 没有处理异常的方法命名都需要改变,这会导致封装性被破坏。

  2. 尽量减少null值的产生和传递

  3. 特例模式:对于可能会返回null的情况,不如抛出异常 或 返回特例对象

第8章 边界

用来指导当出现第三方调用时如何进行代码设计。

  1. 我们设计第三方给别人使用时,若不想用户关注泛型(如map,list等集合),而是在使用类中进行类型转换

  2. 使用别人开发的第三方接口,如何处理

    1. 根据自己的业务需要预定义第三方接口及其实现方法,然后用adapter进行类型转换,进行自己接口和第三方接口的交互(转换)

第10章 类

  1. 对于想被测试类访问到的变量,可以用protected修饰

  2. 单一权责:类应该只有一条修改的理由

    1. 内聚:类的内聚指的是类中的变量被每个方法使用的程序(若每个变量都被每个方法使用,则这个类的内聚性是最高的)

    2. 应尽量使类的内聚性更高,当类中出现了只有被少量方法使用的变量时,可以考虑将这些变量抽象到一个新的类

      eg:如果一个类由于新增方法要修改该类,对该类的功能做修改也要修改该类,则该类违反了SRP(权责单一)原则

      如何做到呢,可以将该类抽象为一个父类,将抽象前类中的方法放到不同子类实现,用公共类(或接口)实现共有的方法

第11章 系统

  1. 延迟初始化

  2. DTO(只关注数据传输的对象,无行为)

  3. aop切面中的横切式关注面概念

    1. 横切式关注面指哪些横跨多个对象和或类,不能被单一的类管理,如日志记录、事务检查、缓存等

    2. 如何处理横切式关注面,将横切式关注面抽离出来,形成切面,再将切面织入到各个环节

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值