正交性的概念来自于几何学: 如果两条直线相交成直角, 它们就是正交的.
用向量术语来说, 就是两条直线互不依赖. 沿着某一条直线移动, 投影到另一条直线上的位置不变.
在编程领域, 正交性用于表示某种不相依赖或是解耦性.
如果两个或更多的事物中的一个发生变化, 不会影响其它事物, 这些事物就是正交的.
在设计良好的系统中, 数据库代码与用户界面是正交的: 改动界面不影响数据库; 更换数据库也不用改动界面.
--<<程序员修炼之道>>
正交性的概念来自于几何学: 如果两条直线相交成直角, 它们就是正交的.
用向量术语来说, 就是两条直线互不依赖. 沿着某一条直线移动, 投影到另一条直线上的位置不变.
在编程领域, 正交性用于表示某种不相依赖或是解耦性.
如果两个或更多的事物中的一个发生变化, 不会影响其它事物, 这些事物就是正交的.
在设计良好的系统中, 数据库代码与用户界面是正交的: 改动界面不影响数据库; 更换数据库也不用改动界面.
--<<程序员修炼之道>>
预防出错或处理异常的代码也同样是代码, 因此也同样会出错, 从根本上讲, 错误是不可避免的.
美国三里岛核事故主要由一个压力释放阀门导致, 一个原本用于预防某种压力过高故障的安全机制.
-- <<软件架构师应该知道的 97 件事>>
很多时候架构师会面临一种诱惑, 也即是在新项目中采用新的框架或技术, 比如现在流行微服务, 就在新项目中强行地上新技术, 哪怕新项目根本无需如此复杂的架构.
为什么架构师会有如此的冲动呢? 背后动机或许仅为在自己的简历上增加一笔, "我也是用过这技术的..."
Nitin Borwankan 在他的这篇 "客户需求重于个人简历(Don't put youre resume ahead of the requirements)" 中批评了这种做法.
来自<<软件架构师应该知道的 97 件事(97 things every software architect should know)>>