遗留程序有两种
来源:互联网 发布:最好的电子印章软件 编辑:程序博客网 时间:2024/05/17 22:30
在《程序员的定义》中,令狐在回复里,以及他后来的一篇《[随笔]测试、Debug、软件改进(与猎手的谈话录)》都谈到了一个很重要的问题,那就是:遗留代码的问题。
令狐认为,应该对遗留代码“给予足够的尊重”。在一定程度上的确是这样的,特别是在刚接触这些代码的时候,无论你觉得它们多么滥,但它们毕竟是久经考验,逐渐形成的,冒失地对其作大的改动,很可能是走回头路。
当然尊重也不是绝对的,该改的还是要改。我觉得遗留代码至少有两种:
一种是开始设计得很好,但随着需求变化或对需求理解的深入,逐步改进。或是开始不太好,但随着一步步的优化改进,慢慢变好。这样的代码虽然乍一看有一些不合理的地方,但是经过仔细分析,其实是不得已而为之——比如减小改动造成的影响,或是性能考虑(有时出于性能考虑,不得不牺牲很多的清晰性)。
另一种是开始就不好,而且为了适应需求变化或对需求的理解,用了各种权宜之计来实现。或是开始还好,但在随着需求变化而改动的过程中没有及时消除坏味道而变得越来越坏的代码。
当然,这两种遗留代码至少有一个共同点是:可以实现现有需求。如果连现有需求都不能实现的垃圾代码就不用讨论了。
对于前一种代码是没什么说的,一定要尊重,最多是在它没有单元测试的情况下给它补上这一课就好。而对于后一种代码,则有改进的必要。
不过改动毕竟是风险比较大的,所以我强调TDD。但“没有银弹”的教诲还是要时刻铭记于心的,不止是TDD,包括敏捷方法及重方法论,都不是银弹。人,始终是软件开发中最重要的因素。令狐在《测试先行的敏捷方法》中的回复说得没错,对于新手来说,TDD甚至未必比直接Coding有利。
但我仍然要鼓励TDD,因为修改代码,不论是别人的还是自己的,总是不可避免的。开始TDD,需要有勇气,而如果没有TDD就开始改代码,那就是鲁莽了。
令狐说得是:
其实所谓的“现代理论”未必比老的理论高明多少,对于一个人来说,重要的是他能不能把一种理论(无论是现代的还是古代的)变成自己有效的武器。一个掌握了一种有效武器的人,比掌握了无数新理论但不能有效运用的人要有用得多。
有效运用是最重要的事。
嗯,有一点必须澄清一下,以免误会:“现代理论”还是比“古代理论”高明很多的。因为它是针对古代理论的缺点总结发展而来。但是我想说的是,“现代理论”并不是从天而降的馅饼,它本身并没有多少神秘之处,因为现代理论也是对古代理论的分析、批判、总结、发展这样过来的。因此不是说掌握了现代理论就是一件多么了不起的事,就可以看不起那些没有掌握的人。关键还是要用好。
2005 12 14 - 17:48 by 令狐虫 (link) --
- 遗留程序有两种
- C#杀死手动关闭控制台程序,遗留的进程
- 遗留代码
- 字符串遗留
- Refactoring Legacy Applications: A Case Study[重构遗留程序的一次案例学习]
- “程序中遗留的缺陷与已检测出的缺陷成正比”之我所见
- ASP遗留的恶习
- 测试遗留代码
- SOA与遗留系统
- 如何处理遗留代码
- 妥善处理遗留缺陷
- 海子遗留的美丽
- 一个lambda遗留题
- 遗留物检测思路
- 【遗留----2016.03.07】
- 解决遗留的问题
- 公司遗留技术问题
- fork遗留习题详解
- log4j的配置笔记
- 黑客破译Xbox360文件系统 克林顿颁游戏禁销法令
- 史玉柱百万年薪请玩家策划
- 五分钟休闲游戏VS防沉迷系统
- 最新小说读物快版,完全免费,高效。
- 遗留程序有两种
- 在Windows2003 SERVER下配置PHP环境
- 陈天桥向私服取经 盛大免费放手一搏
- 你最崇拜谁?IT领域10大技术天才介绍
- 魏纪中:游戏竞技成体育项目 切忌强化
- javascript的作用域
- 由超女现象引申出来“选美观”
- 软件工程相关作品奉献。
- Eclipse实用教程 [精华]