今日艺术鉴藏:书画名家沙俊杰作品欣赏
大家好,软件设计中的正交性是指「正交表设计方法」很多人还不知道,现在让我们一起来看看吧!
正交性的定义任何操作均无副作用,每一个动作(API,函数)只改变一件事,不会影响其他。无论你控制的是什么系统,改变属性的方法有且只有一个。
例:显示器的亮度、对比度、颜色调节互不影响
益处提高生产力改动可以实现局部化。测试时只需测试新增的代码,而无需改动已有的代码促进复用。每个组件有明确而具体的责任。组合正交的组件,会有意想不到的生产力提高。如果有n个定义明确具体的组件,那么可以做远远大于n件事的组合。降低风险易于替换,隔离有问题的代码区域。有问题的代码块不会将问题传播到系统的其他地方,没有‘传染性’,可以很容易的修改。易于测试。每个部分互不影响,测试组合就会少很多不会与第三方的平台组件耦合在一起,出问题时可以随时替换第三方平台。应用项目团队正交划分的团队可以提升效率,每个人都知道自己该做什么,而不会影响到其他人,可以全力以赴。而非正交的团队可能经常需要讨论甚至争吵来界定自己的责任,这样就影响了每个人的产出,很大一部分生产力浪费在了一来一往上。
设计设计模块时要考虑正交性。分层是一个很好的实践。计算机里操作系统与硬件打交道,写应用系统的人是不需要知晓硬件系统的细节的。web开发中也会有MVC模式,更改视图不会影响数据库设计。因此在设计时,问一下自己:当改动某个特定需求时,有多少个组件会受影响?最佳答案是1个。这个要求很难,但是值得我们追求
开发让你的代码保持解耦。乔布斯提出了Stay hungry, Stay foolish。我们写代码时需要提示自己Stay shy,不要过早过多把代码暴露出去,用最小的可见性,只有必须的情况下才提升可见性,而不是一开始就把所有的都设置成public,这样以后想要变为protected或者private时,你就需要与所有团队沟通一遍,保证这个函数、类没有使用才可以动手,会大大损害你的精力。避免使用全局数据。代码里使用全局数据,无形中就会引入很多问题,在使用某个变量时,你要时刻注意多线程可能会引入竞态条件,要时刻警惕变量值是否是你需要的?是否被其他线程修改过了?一般情况下,把所需的语境显式传入到模块中,可以使代码更易理解和维护,面向对象中,可以在构造器中将语境作为参数传入。避免编写相似的函数,DRY(Don"t Repeat Yourself)原则,在Unix编程艺术中也叫SPOT(Single Point of Truth)原则测试正交性设计的组件由于之间互不影响,测试时可以只专注于某一个组件的功能是否符合要求,而无需测试各种组合的可能性,大大减少了测试工作量。
相关定义紧凑性 -- 相关代码写在一起,保持逻辑紧凑
郑重声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。