重复的危害与正交性

62 篇文章 1 订阅
62 篇文章 1 订阅

重复的危害指的是不要在系统各处对知识进行重复,而正交性指的是不要把任何一项知识分散在多个系统组件中。

大多数人都认为维护是在应用发布时才开始,维护就意味着修正bug和增强特性。而事实是程序员须要持续不断的维护,当我们设计或编码时,出现新需要,环境或许变了等等时,

不管原因是什么,维护都不是时有时无的活动,而是整个开发过程中的例行事务。

系统中的每一项知识都必须具有单一、无歧义、权威的表示。

在多人协作开发时,自己需要的是营造一种环境,在其中要找到并复用已有的东西,比自己重新编写要更容易的多。

再谈一下正交性, 在计算机中它表示某种不依赖性或是现在通常说的解耦性,如果两个或多个事物中的一个发生变化,不会影响其他事物,这些事物就是正交的。

书中举了一个非正交的例子,讲的是做为游客的你坐在飞机上游览科罗拉多大峡谷,驾驶员开小差吃他的午餐吃鱼时晕了过去,幸运的是驾驶员采用了固定模式将你留在了离地面100英尺的地方。

此时,你推断,升降杆控制总升力,所以 轻轻将其压低可以让直升机平缓降落地面。然而当你这么做的时候,发现情况就不是这么简单。直升机鼻子向下,开始向左盘旋下降。突然间你发现,

你驾驶的这个系统,所有的控制输入都有次级效应。压低左手的操作杆,你需要补偿性地向后移动右手柄,并踩右踏板。但这些改变中的每一项都会再次影响所有其他的控制。突然间,你在用一个让人难以置信的复杂系统玩杂耍。直升机的各个控制器断然不是正交的。

从这个小故事,可以体会到如果是正交的话,它的好处有很多。

如果组件是相互隔离的,你就可以放心只要不改变组件外部的接口,你就不会造成波及整个系统的问题。

它可以提主生产率、降低风险、促进复用、更利于测试。对于正交设计的好坏,有一个简单的评断标准,就是一旦设计好组件后,如果显著地改变某个特定功能背后的需求,有多少个模块会受到影响?

在正交系统中,答案应该是一个。可以用很多技术实现正交性,比如说让你的代码保持解耦,不会没有必要的向其他模块暴露自己内部的内容、也不依赖其他模块的实现模块,避免写相似的函数。养成不断地批判对待自己的代码习惯,寻找任何重新进行组织、以改善其结构和正交性的机会,这个过程可称它为重构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛慢慢向上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值