• 自然简单

    2011-09-02

    分类:敏捷项目

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/skysw-logs/159104058.html

    人是喜欢简单的动物;

    所以,人喜欢的软件;

     

     

    于是,就要简单的设计;

    那么,什么才是简单,什么才是简单设计(不是简单的去设计);

    1. 简单是针对使用者而言的;

    一间装修精美的房间对你来说是简单的,你只需要入住;一块红砖对于一位建筑工人是简单的,他只需要把它垒放在另一块的上面;然而,那块转头当你需要派人的时候(不论线上线下)也是简单的,只要拽出去就行,你还能拽第二块、第三块...

    所以 Google 的主页是简单的,一个关键只需要一个回车就能开始它的匹配;但是 它的实现 对于开发工程师来说又是复杂的;

    2. 简单的本质:

    1)Reliable, Predictable

    用水杯喝水,知道可以解渴,因为简单;尽管有气象台,想要预报天气,还是很困难,因为复杂;

    2)Cheap

    拿到一部 iphone,不要阅读长篇大部头的说明书,就能点触开始;一台电脑,插上网线,就能接入网络;学习成本,接入成本,使用成本;

    3)Value

    低成本并不代表没有价值,反而相对而言有更加专一的价值;

    4)Building Blocks

    砖石砌成楼房、细胞形成躯体、硅晶二极管组成集成电路、电脑连成网络;

     

    再看,如何做出简单设计?

    对于产品的管理者:如何让使用者一目了然?什么才是用户最想要的功能?

    对于类库的实现者:如何提供简单的接口调用?如何让设计让更多人容易理解?

    对于代码的开发者:如何写出简单的代码?

     

    说到这里,那些大牛们提出的 代码 简单设计的原则 就不再 突兀;

    1)需要有针对的测试,保证功能的可靠性;

    2)代码尽可能的短小,学习、调用的成本降低;

    3)单一的职责原则,让函数/模块提供单一的功能;

    4)简单代码之间的紧密配合才能有简单的系统;

    是不是很顺其自然;

     

    最后 TDD 测试驱动开发 是一种方便的实现简单设计的方法,但决不是惟一的;任何的工具或者方法都有他使用环境,使用者的上下文,当明辨之、慎思之!

     

    自然的就是简单的!

    分享到:

    评论

  • 糊涂-聪明-糊涂?喜欢返璞归真的简单:)