如果说数据结构和算法教你如何写出“能算得更快、跑得更稳”的代码,那么面向对象和设计模式更关注“怎么让系统更容易维护、更容易扩展”。

在工程实践中,常见的代码质量问题往往不是“不会写代码”,而是:

  • 命名表达模糊,意图不清
  • 类职责不单一,边界混乱
  • 分层失衡,耦合度过高
  • 模块化缺失,改一处会影响太多地方

这些问题会推高成本:线上故障更难排查,修复更慢,团队长期被“修修补补”牵制。
一旦把这些问题吃透,系统就会更稳定,团队也会有更多时间做更有价值的事。

如果你现在也在做技术面试,围绕“设计能力”提问时,不要只问“有没有听过某个模式”,更有效的是问“你在什么场景下这样做、为什么这样设计、后来有什么收益或代价”。

对于已经带团队的人来说,最难得分的时刻,不在于你写得多快,而在于你能否让团队持续交付优质功能。
如果自己都不能解释清楚“什么样的代码才算好”,在 code review 中也会很难帮助到别人。

面向对象

什么是面向对象编程?

面向对象(OO)不是“封装、继承、多态”这三个词的死记硬背,而是先围绕“业务概念”和“行为边界”建模。

什么是面向对象编程语言?

支持对象作为一等公民(有状态、行为可组合)的语言都属于 OO 语言。Java、C#、Python、TypeScript 是常见代表。

什么是面向对象分析和面向对象设计?

面向对象分析(OOA)关注“问题域中的核心对象是什么”;
面向对象设计(OOD)关注“这些对象如何协作、如何隔离边界、如何演进”。