神射手flisa吧 关注:115贴子:40,868
  • 5回复贴,共1

不要重做轮子

取消只看楼主收藏回复

程序员的基本素质之一,就是不要重新设计轮子。
轮子,一种很方便的工具。
重新设计轮子,就是指将别人已经做好的东西再做一遍。
身为程序员应该谨记,不要重做轮子。


1楼2012-11-10 23:06回复
    Stroustrup博士在C++程序设计语言中,为了讲解C++的特性和一些设计方法,将标准库中已经有的功能进行了部分重现,进行演示。
    比如C++的标准库中的string类。
    他在讲解时就在书中实现了一个简单的string类。
    他在这样演示性的实现之后,都会进行说明,如果真的要使用这一功能时,请使用标准库的string类,而不是自己编写的手工代码。
    在书中他也多次进行说明,如果标准库提供了一个功能,比如复制C风格字符串的函数strcpy(),那么请使用库中的函数,而不是自己的手工代码。


    2楼2012-11-10 23:10
    回复
      为什么不要重做轮子?
      Stroustrup博士讲了两点原因。
      第一点就是,自己写的手工代码未必能保证正确。
      相对,C++的标准库则是经过长时间、大量检验的,其正确性可以得到保证。
      另一点就是,手工代码的效率未必高。
      因为标准库的实现者有可能根据机器特点对标准库进行了优化。


      3楼2012-11-10 23:12
      回复
        C++的类的设计,提供了构造函数和析构函数。
        这一设计,在很大部分上减少了代码的重复劳动和强制性的检查。
        这种改进是很有效果的。
        程序员,首先是人。
        人在进行重复劳动时,就有可能会出错。
        有可能的意思是,当数量增大时,就一定会出错。
        因此,一个大型系统必然会有漏洞。
        这不是因为检查不仔细,而是人的天性。
        为了让程序没有漏洞,只有两种方法:
        一种方法是把程序做得极为简单,以至于明显没有漏洞。
        一种方法是把程序做得极为复杂,以至于没有明显漏洞。
        只要还是人在设计程序,这一点就不会变。


        4楼2012-11-10 23:17
        回复
          compile出了一堆BUG,一般是一个大括号打错了。
          现在IDE已经很好用了,一般写的时候就可以看到错误信息。
          而且有一堆BUG,一般是没有使用较好的设计方法。
          软件构建时可以使用这样一种方法:
          先做一个骨架,其他部分还没有实现的时候,用一个模拟系统代替。
          然后一步一步将功能实现。
          不可能出一大堆BUG的。


          6楼2012-11-10 23:46
          回复
            Brooks,传奇的天才软件工程师,毕业之后进入IBM。
            当时IBM想要设计一种新的跨时代的机器,因此就提出了一种新的操作系统,称为OS/360,这种操作系统具有当时能想象得到的几乎所有特性,同时还有良好的性能。Brooks当时反对这个计划,认为难度太大,无法完成。
            后来计划定下来了,让Brooks担任负责人,时年30岁的Brooks毅然接受这一任务,整个项目历时5000人年,最后还没有完全实现一开始的目标。
            这种就属于冒险性质。不过Brooks这种天才毕竟和一般人不一样。
            你可以在百度百科查一下OS/360


            8楼2012-11-11 09:26
            收起回复