正交性

正交性是从几何学中借来的术语。如果两条直线相交成直角,它们就是正交。

 

我们想要设计自足的组件:独立,具有单一、良好定义的目的和内聚。如果组件是相互隔离的,你就知道你能够改变其中之一,而不用担心其余组件。只要你不改变组件的外部接口,你就可以放心:你不会造成波及整个系统的问题。

 

 

正交性的好处可以分为:提高生产效率与降低风险。

 

提高生产效率

 

a.改动得以局部化,所以开发时间和测试时间得以降低。与编写单个的大块代码相比,编写多个相对较少的、自足的组件更为容易。你可以设计、编写简单的组件,对其进行单元测试,然后把它们忘掉 ---当你增加新代码时,无须不断改动已有的代码。

 

b.正交的途径还能够促进复用。如果组件具有明确而具体的、良好定义的责任,就可以用其最初的实现着未曾想象过的方式,把它们与新组件合在一起。

 

c.如果你对正交的组件进行组合,生产率会有相当微妙的提高。假定某个组件做M个事情,而另一个组件做N件事情。如果它们是正交的,而你把它们组合在一起,结果就能做M*N件事情。但是,如果这两个组件是非正交的,它们就会重叠,结果能做的事情就更少。通过组合正交的组件,你的每一份努力都能得到更多的功能。

 

降低风险

 

A.正交的途径能降低任何开发中固有的风险。

 

B.有问题的代码区域被隔离开来。如果某个模块有毛笔,它不大可能把病症扩散到系统的其余部分。要把它切掉 ,换成健康的新模块也更容易。

 

C.所得系统更健壮。对特定区域做出小的改动与修正,你所导致的任何问题都将局限在该区域中。

 

D.正交系统很可能能得到更好的测试,因为设计测试、并针对其组件运行测试更容易。

 

E.你不会与特定的供应商、产品、或是平台绑定在一起,因为与这些第三方组件的接口将被隔离在全部开发的较少部分中。

 

软件的正交性原则在团队开发编码,设计,测试阶段都显重要。那么我们在编码中如何更好的实现代码的正交性?

 

1.让你的代码保持解耦。编写羞怯的代码---也就是不会没有必要地向其他模块的暴露任何事情、也不依赖其他的实现模块。

2.避免使用全局数据。每当你的代码引用全局的数据时,它都把自己与共享该数据的其他组件绑在了一起。即使你只想对全局数据进行读取,也可能会带来麻烦(例如,如果你突然需要把代码改为多线程)。一般而言,如果你把所需要的任何环境(context)显示地传入模块,你的代码就会更易于和维护。在面向对象应用中,语境常常作为参数传给对象个构造函数器,换句话说,你可以创建含有语境的结构,并传递指向这些结构的引用。

 

避免编写相似的函数。你常常会遇到看起来全都很像的一组函数-它们也许在开始和结束处共享的代码,中间的算法各有不同。重复的代码结构问题的一种症状。更了解更好的实现,可以采用策略模式。

 

养成不断地批判对待自己的代码的习惯。寻找任何重新进行组织、你改善其结构和正交性的机会显得非常的重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值