为什么开发者不愿意重构他们的程序?(摘录)
2008-06-24 12:57
281 查看
为什么开发者不愿意重构他们的程序?
---摘自《重构--改善既有代码的设计》
假设你是一位软件开发者。如果你的项目刚刚开始(没有向下兼容的问题),如果你知道系统想要解决的问题,如果你的投资方愿意一直付钱知道你对结果满意,你真够幸运。虽然这样情景适用面向对象技术,但对我们大多数人来说,这是梦中才会出现的情景。
更多时候,你需要对既有软件进行扩展,你对自己所做的事情没有完整的了解,你受到生产进度的压力。这种情况下你该怎么办?
你可以重写整个程序。你可以依赖自己的设计经验来纠正程序中存在的错误,真是创造性的工作,也很有趣。但谁来付钱呢?你又如何保证新的系统能够完成旧系统所做的每一件事情呢?
你可以拷贝、修改现有系统的一部分,以扩展它的功能。这看上去也许很好,甚至可能被看做一种复用的方式:你甚至不必理解自己复用的东西。但是,随着时间流逝,错误会不断地被复制、被传播,程序变得臃肿,程序的当初设计开始腐败变质,修改的整体成本逐渐上升。
重构是上述两个极端的中庸之道。通过“重新组织软件结构”,重构使得设计思路更详尽明确。重构被用于开发框架、抽取可复用组件、使软件架构更清晰、使新功能的增加更容易。重构可以帮助你充分利用以前的投资,减少重复劳动、使程序更简化更有性能。
假设你是一位开发者,你也想获得这些好处。你同意Fred Brooks所说的“应对并处理变化,是软件开发的根本复杂性之一”。你也同意,就理论而言,重构能够提供上面所说的各种好处。
为什么还不肯重构你的程序呢?有几个可能的原因:
1、你不知道如何重构;
2、如果这些利益是长远(才展现)的,何必现在付出这种努力呢?长远看来,说不定当项目收获这些利益时,你已经不在职位上了。
3、代码重构是一项额外工作,老板付钱给你,主要是让你编写新功能。
4、重构可能破坏现有程序。
这些担忧都很正常,我经常听到电信公司和其他高科技公司的员工那么说。这其中有一些技术问题,以及一些管理问题。首先必须解决所有这些问题,然后开发者才能会考虑在他们的软件中使用重构技术。
---摘自《重构--改善既有代码的设计》
假设你是一位软件开发者。如果你的项目刚刚开始(没有向下兼容的问题),如果你知道系统想要解决的问题,如果你的投资方愿意一直付钱知道你对结果满意,你真够幸运。虽然这样情景适用面向对象技术,但对我们大多数人来说,这是梦中才会出现的情景。
更多时候,你需要对既有软件进行扩展,你对自己所做的事情没有完整的了解,你受到生产进度的压力。这种情况下你该怎么办?
你可以重写整个程序。你可以依赖自己的设计经验来纠正程序中存在的错误,真是创造性的工作,也很有趣。但谁来付钱呢?你又如何保证新的系统能够完成旧系统所做的每一件事情呢?
你可以拷贝、修改现有系统的一部分,以扩展它的功能。这看上去也许很好,甚至可能被看做一种复用的方式:你甚至不必理解自己复用的东西。但是,随着时间流逝,错误会不断地被复制、被传播,程序变得臃肿,程序的当初设计开始腐败变质,修改的整体成本逐渐上升。
重构是上述两个极端的中庸之道。通过“重新组织软件结构”,重构使得设计思路更详尽明确。重构被用于开发框架、抽取可复用组件、使软件架构更清晰、使新功能的增加更容易。重构可以帮助你充分利用以前的投资,减少重复劳动、使程序更简化更有性能。
假设你是一位开发者,你也想获得这些好处。你同意Fred Brooks所说的“应对并处理变化,是软件开发的根本复杂性之一”。你也同意,就理论而言,重构能够提供上面所说的各种好处。
为什么还不肯重构你的程序呢?有几个可能的原因:
1、你不知道如何重构;
2、如果这些利益是长远(才展现)的,何必现在付出这种努力呢?长远看来,说不定当项目收获这些利益时,你已经不在职位上了。
3、代码重构是一项额外工作,老板付钱给你,主要是让你编写新功能。
4、重构可能破坏现有程序。
这些担忧都很正常,我经常听到电信公司和其他高科技公司的员工那么说。这其中有一些技术问题,以及一些管理问题。首先必须解决所有这些问题,然后开发者才能会考虑在他们的软件中使用重构技术。
相关文章推荐
- 56% 的美国开发者最愿意为苹果iOS写程序
- 为什么说每位程序开发者应该学着写Ruby/Python
- 为什么他们都愿意投资Oracle认证?
- 微信小程序常见问题-为什么可以在微信开发者工具中使用http
- 为什么会出现雷粉?他们为什么会流失?怎样维护和粉丝之间的关系?
- iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享
- 【机房重构】——VS2013程序打包
- 为什么vfork的子进程里用return,整个程序会挂掉,而且exit不会(zz)
- 优秀的开发者为什么要学习研究新的编程语言?
- [原创]从80后的爱情观念中去重构程序
- 为什么C++(中文版——感谢waterwalk翻译) -刘未鹏程序语言系列
- <程序设计实践>一点摘录
- (翻译)程序员的程序不工作时他们最常说的20个回复
- 编写高质量代码改善C#程序的157个建议——建议147:重构多个相关属性为一个类
- 为什么要禁止在正式程序中使用sleep语句?
- iKcamp出品|微信小程序|小试牛刀(视频)+发布流程|基于最新版1.0开发者工具初中级教程分享
- 字程序级别的重构
- 从aa.txt里输入string到程序中(前提是txt里有string),输出他们
- 为什么我没有拔出钥匙 ——开锁引发的程序bug解决方案的思考
- 程序全部重构,升级的目标(备注,更新)