`

知道KISS原则吗

阅读更多

KISS原则就是Keep It Simple and Stupid. 简单是软件设计之美, 简单的设计使得软件产品易于开发, 易于维护. 简单代表着高质量, 少加班, 每个人都希望自己的工作是简单的.

在KISS原则之外, 应该有一个更重要的原则: Useful. 满足需求是一切产品的低限. 也许需求本身也应该KISS, 简单的需求意味着底成本, 高效率. 可惜客户有时候很难克制自己的欲望. 也许站在客户角度看见的KISS和我们开发者眼中的KISS不完全是一个概念. 有人说: 好的设计是客户做出来的, 开发者其实只是在帮助客户做设计.

Keep
It Simple and Stupid, 最难的在于Keep. 一个人做一个Simple的设计并不难, 难的是让这个设计在需求变化的过程中保持简单. Keep是关键, Keep的时间就是这个设计的生命. 当一个产品无法再Keep Simple的时候, 维护就变的越来越困难, 渐渐的无法加入任何变化, 他的生命也就快结束了. 升级意味着重新做一个.

Keep Simple就是要抵抗需求的变化, 一开始的需求总是比较简单, 比如这样: 设计一个汽车驾驶程序, 他会在遇到红灯的时候停下来, 绿灯的时候向前进.

方案一:

if red_light then
    
stop()
else if green_light then
    go()
end if


这是一个简单的需求, 给出的解决方案也很简单. But, 如果遇到这样的情景: 红灯已经亮了, 但是车前面有个人正在过马路, 他走的很慢. 这个时候当然不能go, 应该按响车喇叭, 等他走过去. 方案一必须要修改: 

if red_light then
    
stop()
else if green_light then
    
if people_ahead then
        ring()
    
else
        go()
    
end if
end if


现实的情况仍然可能发生变化, 比如: 前面尽管是绿灯, 但是横向路口一辆救护车开过来, 或者前面有一个路牌"道路维修请绕行"......种种情况, 其结果就是要在原来的if-else里面加上一个新的判断.

这是一个Simple的设计, 但是很难Keep Simple. 当这个代码片断不断增加, 长度突破500行的时候, 任何相关的需求变更都是一场恶梦. 在软件开发中更复杂的情况我想大家都遇到过.

5
4
分享到:
评论
4 楼 ThatDay1986 2008-06-06  
neomac.lin 的解释很精彩,受益不少
3 楼 tigershuang 2008-06-06  
to:neomac.lin,great ideation !
2 楼 linginfanta 2008-06-06  
kiss就是接吻
1 楼 neomac.lin 2008-06-06  
首先 KISS不是一个原则,只是一个指引。

另外你的例子用过程式语言做例子,不是太能说明问题

int iscleartogo =0;
int events = 0;
function void crossStree(car){
    iscleartogo = checkenviroment();
    if (iscleartogo) {go(car)}
    else {stop(car)}
}
function void go(car){}
function void stop(car){}

function int checkenviroment(){
   if (events >0) return 0
   else return 1;
}

function void eventhappened(){//call be others.
   events++;
}

而且你犯了一个基本的错误,把run time的条件变成compile time的条件

一个判定式,如果有多种变数的话,必须把这些多种变数抽象。
用OO的话:
class car {
  public void crossStreet(Street street){
   if ( stree.isClearToGo()) then
      this.go()
    else 
      this.stop()
    end if
  }
  private void stop(){

  }
}
class Street {
  private EventList eventsToStopCar;
  public boolean isClearToGo(){
    return  (eventsToStopCar.size>0)
  }
  private void onEventHappen(Event event){
    eventsToStopCar.add(event)

  }
}

这些例子可以在你提供的前提条件下应付各种情景。而且对代码本身无更改。

正确的编程思想实现高效开发,不正确的编程思想只会降低效率,这一点我倒是很同意。

相关推荐

    您不可不知的KISS原则——妙手回春ppt作品.rar

    【KISS原则】 KISS原则,全称为“Keep It Simple, Stupid”,中文译为“保持简单,愚蠢”。这是一个设计、编程、管理乃至生活中的通用准则,旨在倡导简洁、直观和高效的设计理念。在信息技术领域,KISS原则被广泛...

    Go-高度模块化遵循KISS原则的区块链开发框架

    高度模块化, 遵循 KISS原则的区块链开发框架

    汉堡原则及KISS原则分享.doc

    汉堡原则及KISS原则分享.doc

    PPT原创作品26:你不可不知的KISS原则(妙手回春-2020年7月22日)PPT模板.pptx

    KISS原则——设计与沟通的黄金法则 在当今社会,信息的呈现与交流无处不在。无论是在商业演示中,还是日常的沟通中,我们都在不断地寻找最有效的方式来传递和接收信息。在众多的设计原则中,KISS原则,即“保持简单...

    基于KISS原则的高度模块化区块链开发框架.zip

    基于KISS原则的高度模块化区块链开发框架.zip

    20丨理论六:我为何说KISS、YAGNI原则看似简单,却经常被用错?1

    【KISS原则】 KISS原则,全称为“Keep It Simple, Stupid”,中文译为“保持简单,愚蠢”。这个原则强调在设计和开发过程中,应尽量使事物保持简洁,避免不必要的复杂性。KISS原则源于工程设计领域,后来广泛应用于...

    读书笔记:高度模块化, 遵循 KISS原则的区块链开发框架.zip

    读书笔记:高度模块化, 遵循 KISS原则的区块链开发框架

    chain33:高度预设,遵循KISS原则的区块链开发框架

    高度预测,遵循KISS原则的区块链开发框架 官方网站和文档: : 官方插件库: : 典型案例: : chain33背后故事: 视频教程: 感谢 bug奖励 我们影响bug评价4个等级(不会奖励人民币,等值虚拟资产)。只有影响...

    一些软件设计的原则一些软件设计的原则

    KISS原则倡导简洁的设计,避免不必要的复杂性。在设计过程中,应追求简单、直观的解决方案,以降低理解和维护的成本。无论是用户界面、系统架构还是日常生活,简单往往能带来更好的用户体验和更高的效率。如苹果...

    系统设计思想与原则(技术准则)

    内容概要:本文档探讨了软件开发中系统设计的思想和技术准则,旨在帮助开发者和工程师们构建... 3.3.2 KISS原则 3.3.3 帕累托法则 3.3.4 泰斯勒定律 3.3.5 根因分析法则 3.3.6 康威定律 4. 设计目标 5. 设计的意义

    SimpleAdminBundle:使用 KISS 原则提供 Simple Admin

    "SimpleAdminBundle:使用 KISS 原则提供 Simple Admin" 这个标题表明我们讨论的是一个名为 SimpleAdminBundle 的开源软件组件,它遵循了 KISS(Keep It Simple, Stupid)原则,旨在为用户提供一个简洁易用的后台管理...

    软件开发设计原则软件开发设计原则

    9. **KISS(Keep It Simple, Stupid)原则** - 保持设计尽可能简单。复杂的系统往往更容易出错,且更难以理解和维护。 10. **DRY(Don't Repeat Yourself)原则** - 不要重复代码。相同的逻辑或数据应在一处定义...

    PJBlog3 kiss模板

    Kiss模板遵循“Keep It Simple, Stupid”的原则,强调内容的纯粹性和易读性。它的设计目标是让用户专注于博客文章本身,减少不必要的视觉干扰,提供一个简洁、舒适的阅读环境。Kiss模板通常采用淡色调,配以清晰的...

    软件开发的201个原则 -- 中文版.zip

    3. **KISS(保持简单,傻瓜)原则**:设计应尽可能简洁,避免不必要的复杂性,以提高代码可读性和可维护性。 4. **DRY(不要重复自己)原则**:避免代码重复,通过重用和模块化来提高代码复用性。 5. **SOLID原则*...

    Android-KISS一个闪电般快的Androidlauncher

    - **极简设计**:KISS遵循“少即是多”的原则,界面简洁,没有多余的功能,让使用者可以专注于核心的启动和搜索功能。 - **高效搜索**:内置快速搜索功能,用户可以通过输入关键词找到所需应用,无需浏览多个屏幕。...

    设计原则文档

    9. **KISS(Keep It Simple, Stupid)原则**:保持设计简洁明了。避免不必要的复杂性,使得代码更容易理解和维护。 10. **DRY(Don't Repeat Yourself)原则**:尽量避免重复的代码。如果同一段代码在多个地方出现...

    LaTeX框架kiss-latex-mindset.zip

    “kiss-latex-mindset”遵循“Keep It Simple, Stupid”的原则,旨在提供一个直观易用的LaTeX环境,通过简化配置和使用直接的命令,减少不必要的抽象层次,让使用者更专注于内容创作。它的主要特性包括: 1. **...

    DOD启示录之程序设计经验原则总结

    6. **迪米特法则**:也称为最少知道原则,一个对象应该尽量少地了解其他对象的内部细节,只与直接的朋友通信。 7. **合成/聚合复用原则**:优先使用对象组合,而不是继承来达到复用的目的。组合比继承具有更高的...

    软件工程中的设计原则与模式.pptx

    设计原则如SOLID原则、KISS原则、DRY原则和YAGNI原则可以帮助开发者编写出更加灵活、可维护和易于扩展的代码。而设计模式则提供了经过验证的解决方案,可以解决软件开发中常见的问题。无论是创建型模式、结构型模式...

Global site tag (gtag.js) - Google Analytics