主流的编程范式或者是编程风格有三种,分别是面向过程、面向对象和函数式编程。
面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。
在系列的最开始,会详细地讲解面向对象编程的相关的知识,为学习后面的内容做铺垫
设计原则是指导代码设计的一些经验总结。设计原则听起来都比较抽象,定义描述都比较模糊,不同的人会有不同的解读。所以单纯地去记忆定义,对于编程、设计能力的提高,意义并不大。
对于每一种设计原则,需要掌握它的设计初衷,能解决哪些编程问题,有哪些应用场景。
对于这一部分内容,你需要透彻理解并且掌握,如何应用下面这样几个常用的设计原则。
设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。
大部分设计模式要解决的都是代码的可扩展性问题。设计模式相对于设计原则来说,没有那么抽象,而且大部分都不难理解,代码实现也并不复杂
经典的设计模式有 23 种。随着编程语言的演进,一些设计模式(比如Singleton)也随之过时,甚至成了反模式,一些则被内置在编程语言中(比如 Iterator),另外还有一些新的模式诞生(比如 Monostate)
会重点讲解 23 种经典的设计模式。它们又可以分为三大类:创建型、结构型、行为型。对于常用的设计模式,要花多点时间理解掌握;对于不常用的设计模式,只需要稍微了解即可
常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式
不常用的有:原型模式
常用的有:代理模式、桥接模式、装饰器模式、适配器模式
不常用的有:外观模式、组合模式、享元模式
常用的有:观察者模式、模板方法模式、策略模式、职责链模式、迭代器模式、状态模式
不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介者模式
编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节。即便你可能对设计原则不熟悉、对设计模式不了解,但你最起码要掌握基本的编码规范,比如,如何给变量、类、函数命名,如何写代码注释,函数不宜过长、参数不能过多等等
对于编码规范,考虑到很多书籍已经讲得很好了 比如《重构》《代码大全》《代码整洁之道》等。而且,每条编码规范都非常简单、非常明确,比较偏向于记忆,你只要照着做就可以。它不像设计原则,需要融入很多个人的理解和思考
除了编码规范,还会介绍一些代码的坏味道,什么样的代码是不符合规范的,应该如何优化。参照编码规范,写出可读性好的代码;参照代码的坏味道,找出代码存在的可读性问题
在软件开发中,只要软件在不停地迭代,就没有一劳永逸的设计。随着需求的变化,代码的不停堆砌,原有的设计必定会存在这样那样的问题。针对这些问题,就需要进行代码重构。重构是软件开发中非常重要的一个环节。持续重构是保持代码质量不下降的有效手段,能有效避免代码腐化到无可救药的地步
而重构的工具就是前面罗列的那些面向对象设计思想、设计原则、设计模式、编码规范。
对于重构这部分内容,你需要掌握以下几个知识点:
关于面向对象、设计原则、设计模式、编程规范和代码重构
实际上,面向对象、设计原则、设计模式、编程规范、代码重构,这五者都是保持或者提高代码质量的方法论,本质上都是服务于编写高质量代码这一件事的
| 特性 | 旧方法论 | 当前方法论 |
|---|---|---|
| 编码规范 | 手写样板 | record 简化 DTO/值对象;Lombok 仍可用 |
| 代码重构 | 手动 | IDE 重构 + SonarQube 规则 + 静态分析(SpotBugs) |
| 测试驱动 | JUnit 4 | JUnit 5 + Testcontainers(集成测试容器化) |
| 代码评审 | 人工 | 人工 + AI 辅助(Copilot 等) |
面向对象、设计原则、设计模式、编程规范、代码重构五者体系不变;Java 21 + 现代工具链让"写出高质量代码"的门槛更低。