程序设计的正交性

什么是正交性

在计算科学中,这个术语象征着独立性解耦性。对于两个或多个事物,其中一个的改变不影响其他任何一个,则这些事物是正交的。

在良好设计的系统中,数据库相关代码应该和用户界面保持正交:你可以变更界面但不应影响数据库,切换数据库而不必更换界面。

测试正交性的小方法

当你规划好组件后,问问自己:如一个特别功能背后的需求发生显著改变,有多少模块会受影响?对于一个正交系统,答案应该是“一个”

保持正交性的方法

保持代码解耦

编写害羞的代码——模块不会向其他模块透露任何不必要的信息,也不依赖于其他模块的实现。试试最少知识原则。

例如:类的属性和方法尽量使用 private,只使用部分 public 方法向外部暴露必须的信息。

避免全局数据

这正是函数式编程的特点之一,尽量不对函数外的程序状态进行修改。

只要代码引用全局数据,就会将自己绑定到共享该数据的其他组件上。即使只打算对全局数据进行读操作,也可能引发问题(例如突然需要将代码改为多线程的情形)。

一般来说,如果总是显式地将任何需要的上下文传递给模块,那么代码会更容易理解和维护。

避免相似的函数

对于几个看起来很相似的函数——或许在开头和结尾的地方共享了公共代码,但是每个函数都有不同的中心算法。

可以尝试使用策略模式重构。

点此查看原文