首页 > 其他分享 >简单原则:KISS原则、奥卡姆剃刀定律、YAGNI原则

简单原则:KISS原则、奥卡姆剃刀定律、YAGNI原则

时间:2022-12-06 08:56:14浏览次数:37  
标签:YAGNI 原则 简单 剃刀 奥卡姆 KISS 内聚

一、简单原则

常见的几个简单原则:

1、 KISS 原则

KISS 是英文 keep it simple,stupid 首字母的缩写。就是要把一个产品做得连白痴都会用,因而也被称为“懒人原则”。换句话说来,“简单就是美”。

KISS 原则源于 David Mamet(大卫·马麦特)的电影理论,后来被逐渐延伸扩展到其他领域。

2、 奥卡姆剃刀定律

奥卡姆剃刀定律(Occam's Razor, Ockham's Razor)又称“奥康的剃刀”,它是由14世纪英格兰的逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1285年至1349年)提出。
这个原理称为“如无必要,勿增实体”,即“简单有效原理”。

公元 14 世纪,来自奥卡姆的威廉(William of Ockham)对当时无休无止的关于“共相”“本质”之类的争吵感到厌倦,于是著书立说,宣传只承认确实存在的东西,认为那些空洞无物的普遍性要领都是无用的累赘,应当被无情地“剃除”。他所主张的“思维经济原则”,概括起来就是“如无必要,勿增实体。”因为他叫威廉,来自奥卡姆,人们为了纪念他就把这句话称为“奥卡姆剃刀”。

3、 YAGNI 原则

YAGNI是英文“You aren't gonna need it” 的缩写,一般认为属于软件工程方法极限编程。 YAGNI 原则指出,程序员应该在面临确凿的需求时,才实现相应功能

二、没有明确“简单”的判断原则

上面简单的几个原则并没有给出判断原则,简单的判断原则应该从客户的价值角度来判断,即:

  • 目标用户的角度,能让业务运作方便,能够节省时间的系统才是 “简单”。
  • 目标系统拥有者的角度,花费最少、产出最高的系统才是“简单”。
  • 利益相关方的角度,能够高效满足对应需求才是“简单”。

而在实施人员的角度,他潜意识里也会希望方便自己的工作,尽早地完成被分派的任务,这是他所希望的“简单”。因此,实施人员会希望设计师给出的设计方案能方便他们落地实现,因为设计师自身的“简单” 观点会对实施人员的工作难度产生巨大的影响。

比如:体操教练让一个体操队员来做一个后空翻,这是“简单”。但是让一个没经过体操训练的普通人做一个后空翻,这绝对不“简单”,可能会摔断脖子出人命的。

三、简单不等于容易

“简单”并不等同于“容易”,要把系统做到“简单”,往往是最难的,一点都不 “容易”。

下图简单吧,就两个石头垒砌起来了,但是绝对不容易。

四、复杂度在不同分工间会互相影响

如果要把某一方的工作变简单,其他角色的工作则往往会变得更加困难。

要得到一个让用户用起来“简单”的系统,或让目标系统拥有者觉得“简单”的系统,则会让设计师的工作变得更加复杂、更困难。要做到这一点,需要设计师突破自身的认知,先站在用户的业务角度去考虑,这是非常难的;还要站在老板的角度,要时刻计算着成本,这更难了。

泰斯勒定律

泰斯勒定律(Tesler's Law)由Larry Tesler于1984年提出,也称「复杂度守恒定律」。

该定律认为:每一个过程都有其固有的复杂性,存在一个临界点,超过了这个点过程就不能再简化了,你只能将固有的复杂性从一个地方移动到另外一个地方。

五、“简单”与内聚的关系

只要做到内聚、低耦合,就可以满足“简单” 了。

但做到了简单,并不一定内聚,一个足够简单但是耦合的系统也是简单的。比如电话客服,需要紧密耦合很多人和系统,但是又足够简单把问题分类,很容易被人工智能替代。

如果已经做到内聚,就不再需要用“简单”原则来判断,“内聚”才是最核心的原则。因为只有内聚,不同个体才得以占有独立的空间,才能够保证权责对等,保障个体在空间上的连续与完整,才能符合现实世界的特质。

六、总结

简单并不代表容易,需要按照客户价值来评判。

标签:YAGNI,原则,简单,剃刀,奥卡姆,KISS,内聚
From: https://www.cnblogs.com/ghj1976/p/jian-dan-yuan-zekiss-yuan-ze-ao-ka-mu-ti-dao-ding.html

相关文章

  • 五大(七大)原则-系统学习三
    一、背景介绍小编自涉足程序园界几千天之多;对于设计原则的学习一直在努力从未见到顶。最近又将设计原则从宏观和微观的角度进行了对比学习;仅以此将自己的学习过程和收获做......
  • 你的职责链模式符合五大原则吗?-系统学习九
    一、背景介绍工作之余对于用到的设计模式进行总结再梳理,发现职责链模式的妙处以及五大原则的指导下更能发挥职责链模式的优势于是乎便有了这篇博文的诞生阅读这篇文章会让小......
  • 软件架构的23个基本原则
    软件体系架构基于一组适用于各种软件系统的基本原则,有经验的架构师知道这些原则,并且能够在软件产品的正确位置实现特定的原则。下面我们快速浏览一下架构师日常遵循的基本......
  • 接口隔离原则介绍
    目录介绍00.问题思考分析01.前沿简单介绍02.如何理解接口隔离原则03.接口理解为一组API接口集合04.接口理解为单个API接口或函数05.接口理解为OOP中的接口概念06.总结一下分......
  • 人机语音交互的原则
    ......
  • 01 新手PCB设计原则
    1.分析原理图功率线分布模块之间的联系2.布局模块化布局先定位、后先大器件再小器件预留走线位置、最小回流路径是否有爬电距离与空间间隙......
  • 单一功能原则
    [编辑]  ​​SOLID​​在​​面向对象编程​​领域中,单一功能原则(Singleresponsibilityprinciple)规定每个类都应该有一个单一的功能,并且该功能应......
  • 设计模式-六大设计原则
    1单一职责原则(SingleResponsibilityPrinciple)2开闭原则(Open-ClosedPrinciple)3里氏代换原则(LiskovSubstitutionPrinciple)4依赖倒置原则(DependenceInversio......
  • 设计模式七个原则
    程序设计七大原则:1.单一职责原则设计的一个类应该专门的负责对应一件事情2.开放封闭原则一、开放封闭原则是面向对象所有原则的核心二、1.对功能扩展开放2.面向修改......
  • 开闭原则详细介绍
    目录介绍00.问题思考分析01.前沿简单介绍02.如何理解开闭原则03.举一个原始的例子04.修改后的代码05.修改代码违背原则么06.如何做到开闭原则07.如何运用开闭原则08.总结一......