分享

运用正交原理实现高质量软件

 东北十三少 2023-08-10 发布于四川

什么是正交性?

“正交性”原本是从几何学中的术语——若两条直线相交后构成直角,它们就是正交的。对于向量而言,具备正交性的两条线相互独立,互不影响。

正交性用于计算科学中,意味着独立性或解耦性。具备正交性的两个或多个事物,其中一个的改变不影响其他任何一个。所以,在软件设计中,使得每个组件与其他组件之间具有正交性,每个组件的改变都不会影响到其它组件,那么软件的设计就是符合ETC(更容易变更)原则,是优秀的设计。

运用正交性设计的软件,明显具备以下两个好处:提高生产力及降低风险。

  1. 获得生产力

  • 正交性设计使得变更被限制在局部,由此带来的好处就是开发时间和测试时间都会减少。因为编写相对较小的、独立自主的组件比编写完整一大块代码要容易;测试这样的组件也比测试一大块代码要容易。

  • 正交性设计可以促进重用。如果一个组件职责清晰、独立自主,程序员就可以把它开发成可重用构件,后面的软件可以直接对其进行重用。

  • 重用具备正交性的组件能够获得极大的生产力提升。假设一个组件实现了M个功能,另一个具备正交性的组件实现了N个功能,重用这两个组件,就能实现M×N个功能。而如果这两个组件不正交,有重叠之处,所实现的功能就会少于MxN。

  1. 减少风险

  • 正交性使得代码中病变的部分被隔离开。一个模块的缺陷,不太可能影响到其它模块。即便对这个有问题的模块整体替换也很容易。

  • 正交性的软件系统相对不那么脆弱。对单个组件进行小的变更和修复,即便产生问题也都将局限于这个组件,不会影响整个软件。

  • 正交性的软件系统更便于测试,因为为其组件设计和运行测试更加容易。

  • 正交性的软件系统不会被特定的供应商、产品部件或平台紧紧束缚。因为这些组件与软件系统其他部分是正交的,它们的变更不会对整个软件系统造成影响。

以下几种技术可以用来实现软件系统的正交性:

  • 保持代码解耦

  • 避免全局数据

  • 避免相似的函数

这正是:

正交意味全解耦,解耦设计易变更
软件实现正交性,任何变更皆不惧

参考书目:程序员修炼之道—通向务实的最高境界,作者:David Thomas,Andrew Hunt,出版社:电子工业出版社

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多