0%
这是一片思考的空间 -- arthinking
Spring 重构&代码整洁之道 软件设计 JVM 并发编程 数据结构与算法 分布式 存储 网络 微服务 设计模式
Java技术栈 - 涉及Java技术体系

重构速查表

✔️1. 重构原则
1.1 何谓重构
1.2 为何重构 重构改进软件设计 重构使软件更容易理解 重构帮助找到bug
重构提高编程速度
1.3 何时重构 三次法则 添加功能更时重构 修补错误时重构
复审代码时重构
1.4 怎么对经理说
1.5 间接层和重构
1.6 重构的难题 数据库 修改接口 难以通过重构手法完成的设计改动
何时不该重构
1.7 重构与设计
1.8 重构与性能
1.9 重构起源何处
✔️2. 代码的坏味道 重复代码 过长函数 过大的类 过长参数列
发散式变化 霰弹式修改 依恋情节 数据泥团
基本类型偏执 switch惊悚现身 平行继承体系 冗赘类
夸夸其谈未来性 令人迷惑的暂时字段 过渡耦合的消息链 中间人
狎昵关系 异曲同工的类 不完美的库类 纯粹的数据类
被拒绝的遗赠 过多的注释
✔️3. 构筑测试体系 自测试代码的价值 JUnit测试框架 添加更多测试
✔️4. 重新组织函数 提炼函数 内联函数 内联临时变量 以查询取代临时变量
引入解释性变量 分解临时变量 移除对参数的赋值 移除对参数的赋值
替换算法
✔️5. 在对象之间搬移特性 搬移函数 搬移字段 提炼类 将类内联化
隐藏委托关系 隐藏委托关系 引入外加函数 引入本地扩展
✔️6. 重新组织数据 自封装字段 以对象取代数据值 将值对象改为引用对象 将引用对象改为值对象
以对象取代数组 复制“被监视数据” 将单向关联改为双向关联 将双向关联改为单向关联
以字面常量取代魔法数 封装字段 封装集合 以数据类取代记录
以类取代类型码 以子类取代类型码 以Strate/Strategy取代类型码 以字段取代子类
✔️7. 简化条件表达式 简化条件表达式 合并条件表达式 合并重复的条件片段 移除控制标记
以卫语句取代嵌套条件表达式 以多态取代条件表达式 引入Null对象 引入断言
✔️8. 简化函数调用 函数改名 添加参数 移除参数 将查询函数和修改函数分离
令函数携带参数 以明确函数取代参数 保持对象完整 以函数调用取代参数
引入参数对象 移除设值函数 隐藏函数 以工厂函数取代构造函数
封装向下转型 以异常取代错误码 以测试取代异常
✔️9. 处理概括关系 字段上移 函数上移 构造函数本地上移 函数下移
字段下移 提炼子类 提炼超类 提炼接口
折叠继承体系 塑造模板函数 以委托取代继承 以继承取代委托

重构与代码规范书籍推荐:

  • 重构-改善既有代码的设计》
  • 《代码整洁之道》

重构与代码规范在线学习资源推荐:

欢迎关注我的其它发布渠道

订阅IT宅
内功修炼
Java技术栈
Java架构杂谈是IT宅精品文章公众号,欢迎订阅:
📄 网络基础知识:两万字长文50+张趣图带你领悟网络编程的内功心法 📄 HTTP发展史:三万长文50+趣图带你领悟web编程的内功心法 📄 HTTP/1.1:可扩展,可靠性,请求应答,无状态,明文传输 📄 HTTP/1.1报文详解:Method,URI,URL,消息头,消息体,状态行 📄 HTTP常用请求头大揭秘 📄 HTTPS:网络安全攻坚战 📄 HTTP/2:网络安全传输的快车道 📄 HTTP/3:让传输效率再一次起飞 📄 高性能网络编程:图解Socket核心内幕以及五大IO模型 📄 高性能网络编程:三分钟短文快速了解信号驱动式IO 📄 高性能网络编程:彻底弄懂IO复用 - IO处理杀手锏,带您深入了解select,poll,epoll 📄 高性能网络编程:异步IO:新时代的IO处理利器 📄 高性能网络编程:网络编程范式 - 高性能服务器就这么回事 📄 高性能网络编程:性能追击 - 万字长文30+图揭秘8大主流服务器程序线程模型
📄 Java内存模型:如果有人给你撕逼Java内存模型,就把这些问题甩给他 📄 一文带你彻底理解同步和锁的本质(干货) 📄 AQS与并发包中锁的通用实现 📄 ReentrantLock介绍与使用 📄 ReentrantReadWriteLock介绍与使用 📄 ReentrantLock的Condition原理解析 📄 如何优雅的中断线程 📄 如何优雅的挂起线程 📄 图解几个好玩的并发辅助工具类 📄 图解BlockingQueue阻塞队列
📄 消息队列那么多,为什么建议深入了解下RabbitMQ? 📄 高并发异步解耦利器:RocketMQ究竟强在哪里? 📄 Kafka必知必会18问:30+图带您看透Kafka
📄 洞悉MySQL底层架构:游走在缓冲与磁盘之间 📄 SQL运行内幕:从执行原理看调优的本质 📄 洞悉Redis技术内幕:缓存,数据结构,并发,集群与算法