什么是Orthogonal?

orthogonal表面意思是正交的,直角的。

平面几何的坐标系的x轴与y轴就是正交关系。

在软件工程中Orthogonal常常表示两个组件相互独立,无耦合或低耦合。

什么是Orthogonal Thinking?

Orthogonal Thinking对应中文翻译:正交思维。

其核心思想是在处理问题或寻找创意方案时,采取与传统思路正交的新视角。具体包括:

  1. 从多个维度或角度来审视问题。

  2. 突破既定思维模式,换个角度看问题。

  3. 跳出刚性思维的框架,以更宽广的视野看待事物。

  4. 组合看似不相关的概念,形成创新点子。

  5. 找到问题的本质,抛开表面的假设。

  6. 突破当前状态下最明显的限制。

  7. 发散思维,打开思路,再进行融合。

Orthogonal Thinking能帮助我们跳出思维定势,发现更多可能性,获得整体性的视角。它常被用于科技创新,商业策略,艺术创作等领域的创意思考中。正确应用此思维方式,能增强我们的创造力和解决问题的能力。

Orthogonal Thinking与软件工程

先看Orthogonal Thinking的应用:

  1. 系统架构设计: 采用分层架构、微服务架构等,实现高内聚低耦合
  2. 模块和组件设计:模块之间功能独立,通过API连接交互
  3. 数据库设计: 数据库表结构的分割,遵循最小化冗余的原则
  4. 前后端分离:前后端职责分明,可独立选择技术栈
  5. 系统拆分和重构:将庞大系统拆分为互不依赖的子系统
  6. 代码重构:函数内部控制流程的独立性改造
  7. 团队组织: 按功能划分团队
  8. 测试驱动开发: 测试代码与业务代码分离,两者正交并重
  9. 代码review流程: reviewer与开发者角色正交,提高代码质量
  10. DevOps理念: 开发与运维正交合作,提高交付效率
  11. 集成环境管理:开发、测试、生产环境分离,正交而独立
  12. 持续集成和持续交付:频繁小版本迭代与独立运行环境正交
  13. 容错和容灾设计: 主系统与备系统正交而容错
  14. 日志和监控系统: 应用日志及监控系统独立而不耦合

Orthogonal Thinking提高了软件系统的内聚性,灵活性,可维护性。

内聚性(低耦合):

  1. 正交的模块和组件职责单一,避免不必要的依赖关系
  2. 将易变部分与稳定部分隔离,减少变更带来的连锁反应

灵活性:

  1. 正交的组件可由不同人或团队开发
  2. 通过正交隔离变化点,组件更新的同时可以很好做到不影响其他的组件
  3. 便于通过新组件的方式引入新技术
  4. 测试代码与功能代码分离,利于

可维护性:

  1. 正交组件易于进行隔离测试,利于提高测试效率,及时发现问题
  2. 正交的组件和模块相对独立,一个组件的变更不会造成连锁反应,降低变更风险
  3. 职责单一的组件代码易于理解和修改,明确职责边界,提高代码可读性
  4. 多个开发人员可同时在不同模块作业,提高修复效率
  5. 新人可先关注独立模块,无需理解全部系统,便于新人上手
  6. 可在保持旧有系统稳定的前提下进行扩展,容易进行扩展,不需要侵入式修改

在软件工程利用Orthogonal Thinking的要点:

  1. 对系统需要具备对系统全局的思考,不能只盯着某一点,要考虑不同组件的关系和交互

  2. 需要学会切换视角,对系统展开多角度多维度的思考

  3. 组件设计要通过良好的封装和抽象做到边界设计合理,接口清晰

  4. 合理设计系统关注点,关注点要正交,如坐标系的x轴与y轴那样,能够组合表示所有的平面向量

  5. 在大型重构要分阶段进行

  6. 要以业务为导向应用正交思维,实现clean架构

总结

组件(模块)是正交的方式,正交是组件(模块)的原则。

正交思维体现了SOLID设计原则的单一职责原则和隔离原则。