Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 一个程序员关于代码重用的随口乱弹
【标  题】:一个程序员关于代码重用的随口乱弹
【关键字】:
【来  源】:http://blog.joycode.com/peon/archive/2004/08/11/30288.aspx

一个程序员关于代码重用的随口乱弹

Your Ad Here

最近在清理本组的代码,主要任务是合并重复代码,改善系统结构,因为系统历史很长,参与过的开发人员很多,里面的冗余代码非常多,清理起来真的是非常辛苦的事情:<

相信每个工作有一定年头的程序员都有一个自己的代码库,需要的时候要么copy,要么include,不管是自己写的还是抄的别人的,反正是顺手拈来,这也算是大家技术积累的一个方面。对于一个公司,特别是作产品的公司,我觉得代码的重用,组件的编写也是一件很有意义的事情。

现在抛开LOC那些术语,抛开什么软件工程XP,也不谈设计模式重构,谈谈我自己的想法:

1.重用是不是越多越好?什么时候要考虑重用?

我觉得不是的,可重用组件的编写要比一般的代码付出更多的精力,要适应更多的情况,要经过更多的测试,要有更加齐全的文档,所以说重用要适度,否则你的项目可能大大超出预算。一般的原则是:第一次使用直接写,当你写到第3次的时候,你就要考虑是否重用了,当然,很多组件,比如访问数据库的代理层,那是可以预见到需要重用的。

2.“改他人的代码不如自己重新编写”是重用的大忌么?

http://www2.ccw.com.cn/02/0244/b/0244b01_3.asp?看了一篇文章,里面是这种观点,但是觉得板子不能全部打在程序员头上,假如一个组件是测试严格,文档齐全的,在项目的压力下,有谁会愿意去自己再写一个啊!应该说 文档不全,每次出了问题总要trace into进去的重用代码,才是重用的大忌。

3. 一个项目组是否应该由专人编写重用代码?

个人觉得,与其讨论是否有专人编写重用代码,不如讨论是否应该由专人测试和管理重用代码及其文档,正如上面一条所说,重用组件的文档化和正确性是至关重要的,重用组件的每一次变化,都要经过严格的测试然后checkin,假如接口有变化,必须由专人负责通知或者修改相关代码。这里建立一个良好的配置管理是非常重要的,否则你就跌入到一个比dll hell更加深的地方去了:>

4. 重用或者组件是否是解决软件问题的灵丹妙药?

前段时间常常看到文章,大概就是以下的论点:由行业专家开发重用的组件,然后给各个公司使用;一个公司里面高级程序员开发组件,低级程序员搭建积木。极力的鼓吹组件编程,勾画出一幅美好前景。我曾经也迷信这个,但是现在觉得:无论是com/corba还是DotNet/Java中的解决方案,组件解决的是二进制代码重用兼容性的的问题,而不是软件开发的问题本身。

不要以为使用了组件,重用了代码就可以摆脱小作坊的生产方式,进入软件开发的大同时代。软件的复杂性在于其模拟的现实世界的本身,组件和重用永远只能解决一部分的问题。重点还是必须放在规范管理,重视需求方面。

大家看看目前重用的比较好的部分:

1.操作系统的内核对象,GUI对象

2.数学运算,加密算法

当然其他的还有一些,这些要么属于小粒度的重用(比如一个按钮的对象),要么具有严格的规范和定义(比如数学运算和加密算法,一些协议的库),进入行业领域以后,需求千变万化,重用的粒度越大,适用的范围越狭窄。写出一个适用于行业的framework,要么适用范围太小,自己公司能用就不错了,要么成本太高+使用复杂,别人买你的还不如自己定制开发。

MSN Messenger的web版本:【上一篇】
CSDN&Donews 开通Wiki服务:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 表单配置视窗和解析度
  • Zoundry离线Blog编辑器
  • mobilink 实现基于时间戳的分区同步
  • 几种开源SIP协议栈对比
  • [精华] 防火墙设计中的一些重点问题(转自:linuxforum.net)
  • ARM平台C语言库初始化的一些问题。(摘录)
  • 软件需求-理解-开发-成果
  • 深入分析MFC中的CArray类(转载)
  • GHOST异常情况分析
  • Linux 下的字体
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.