• 转贴一段偶觉得说得非常好的话


    原文来自非典型秃子江南白衣 blog文章《Javaer 双修C++的key point》的回复:
    "在C++设计过程中,通常,我们会在两个角色之间转换:生产程序员和客户程序员,我们需要保持两种角色之间衔接的简单性。例如,STL的实现,可以很复 杂,但是,必须保持使用上的简单性,要足够简单。为了实现这种使用上的简单性,在STL的实现上合理运用高超的技巧,就是值得的--这种复杂性不会扩散。 如果STL的内部实现简单了,但是代价是接口或者使用的时候的复杂,那么这种简单就是有问题的。
    一种复杂性,导致了整体的简单性,就是有益的,反之,则是有害的。判断一种复杂性是不是可以采用,我的标准是:如果这种复杂性不会扩散,那么,可以大胆一点,如果会扩散,那么就需要谨慎。我想,这样比简单的回避复杂性更有效。
    当然,复杂性是手段,不是目的,我这里并不是鼓励卖弄技巧和试验复杂方法,只是在简单方法不能完成任务时,不妨试一试所谓的复杂方法。"

    兽评:在复杂性和简单性之间存在着这样一种辨证关系,有时候为了提供简单性的接口,我们需要采用异常复杂的技术。对复杂性的控制与管理是软件开发的一个重要的特征,控制复杂性的扩散是一种必备需要。西蒙有一个很好的比喻:从前有两个钟表匠,名叫坦帕斯和霍拉,他们能制作出精美的手表--每个手表都有大约1000个零 部件。坦帕斯在制作手表的时候,如果放下手中的活--譬如去接电话--手表马上会散架,必须重新从头组装那些零部件。顾客越来越喜欢他做的手表。给他打电 话的次数越多,对他来说找到充足的,不间断时间完成一个手表就越难。 霍拉制作的手表不比坦帕斯制作的手表复杂程度低,但是他事先做好设计,这样他就能够将十几个零件构成组件,然后组合这些位置固定的组件。因 此,当霍拉放下手中正在组装的手表去接电话的时候,他只错过一小部分的工作,他可以仅用坦帕斯所用工时的一部分就完成手表的组装--如果这两个手表匠在安 装零件时每10次有一次被打断,那么平均来说坦帕斯完成一只手表所需的时间是霍拉的4000倍。
    版权所有,欢迎转载
  • 相关阅读:
    [python第七课]字符串和常用数据结构
    深浅拷贝与循环引用问题
    CSS居中总结
    CSS布局总结
    跨域
    函数节流与防抖
    浏览器渲染原理及渲染阻塞
    进程与线程
    前端之网络攻击
    前端之缓存
  • 原文地址:https://www.cnblogs.com/xiaotie/p/402990.html
Copyright © 2020-2023  润新知