摘要:让我们来看看重写代码会失败的五个征兆吧。重写的价值不够明确重写代码必须要产生新的价值。因为重写代码和主要的重构工作会耗费大量资源,如果不能在半年内看到有价值的产出,那问题就大了。
凡事预则立不预则废。在公司里呆久了,总会遇到一些软件项目需要重写代码(或换个全新语言、或进行重大版本升级等)。重写整个系统的风险极大,资源投入到了几个月的重写过程,就没法投资在开发新功能上了。让我们来看看重写代码会失败的五个征兆吧。
重写的价值不够明确
重写代码必须要产生新的价值。 因为重写代码和主要的重构工作会耗费大量资源,如果不能在半年内看到有价值的产出,那问题就大了。如果你是这个项目的高管而且你自己不确定重写代码增加的价值是什么,那么可能终止更好;如果你确定你想要重写,那就需要做用户调研或者设计构思,然后重新评估重写这个项目到底是否符合用户的需求。
你正在进行大切换式的重写
切换更容易,大切换重写是所有代码重写的警报,它只适用于非常简单的系统。 已经有过大量的论述,关于为什么采用更为渐进的重写方法更好。如果你是一名高管,你需要打电话给你的开发人员,因为他们会努力进行大规模的转换。 当然,他们从不使用这些词,而是说在“重新设计”之类的,但这是一回事。 问他们 - 什么时候能在生产中看到这些代码? 如果答案超过3个月......他们可能正在进行转换。
重写的特征速度比遗留系统慢
这很简单:如果您在进行重写时,同时改进现有的旧产品以保持竞争优势(一个好主意),但重写系统无法以更快的速度添加与旧系统相同的功能 ,重写代码大概永远不会完成。重写研发团队需要由你的超级巨星开发人员组成,他们了解最新的技术,并且了解如何掌握遗留系统的复杂性。此外,确保重写团队能够持续快速地进展! 不要在重写的前2-3个月根据重写速度做出判断,项目开始时总是挺快的,因为还不复杂,但随着时间的推移,它会变慢……
您不与那些曾经是旧系统专家的人合作
旧系统的前开发人员甚至是高级用户,这些人对于重写项目是至关重要的,因为他们了解关于应用程序的所有问题。 如果没有这些人,您将成为Tesler定律的受害者,最终重写的版本可能价值还低于旧版本,不如原来的好用。请他们帮助做测试,他们能帮助发现重写中的很多细微实现错误,您可能永远无法发现。让这些人参与进来。 让他们觉得他们有助于重写(确实是),尽早并经常获得他们的反馈。
你打算删除一些很难的功能
让我们假设您正在重写一个取得了一定成功并积极为用户提供价值的系统。 很容易陷入使用“简化”构建名称中的较少功能进行重建的陷阱。 但这有意义吗? 是的,旧的应用程序可能很慢而且很难看。 但想一想 - 你的用户愿意忍受缓慢而丑陋的系统! 如果您删除他们正在使用的功能,您的用户将讨厌您。这是否意味着您应该盲目复制旧有系统的功能? 当然不是! 传统技术所需的一些功能已经变得僵化。 现在有类似OCR的东西,可以代替表单字段的页面。 这意味着您可以自由地重新构想这些功能或创建一个允许您删除操作的新流程,但无论多么诱人,您都无法删除要完成的工作/整个故事。
回顾一遍以上要点
我希望你注意到重写意味着要聚焦真正的,立足现在的价值交付。这就是为什么每次重写都必须从彻底的设计阶段开始,以发掘所有增值功能。该sprint的核心方法是通过访谈从最终用户和利益相关者那里获取反馈,并通过原型确认您的想法。这确保了产品以您期望的方式满足市场需求,并在重写期间留出创新空间,这是基于真人的真实反馈。
如果你觉得你不得不选择通过重写代码复制一个特别繁重的旧功能和添加新功能,你有一些选择。一种选择是使用Martin Fowler的扼杀者模式,您可以在重写时创建新功能,同时相对无缝地与旧功能集成,从而保留这些功能而无需重新创建它们。
本文由网易云社区简译。更多详情请参见原文。
文章来源: 网易云社区
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/25403.html
摘要:以下总结了很多企业在他们的私有云项目中会犯的八大错误。然而,其他项目,公司政治和团队成员之间不同程度的承诺可能造成私有云项目的大问题。否则,私有云项目将会有延误的风险和代价高昂的疏漏。 尽管私有云拥有很多的益处,但其部署充满了潜在的风险。以下总结了很多企业在他们的私有云项目中会犯的八大错误。私有云似乎是一个了不起的想法。他们提供了公有云的灵活性,可扩展性和自服务的能力,但又拥有私人数据中心的...
摘要:本文详细描述了堆内存模型,垃圾回收算法以及处理内存泄露的最佳方案,并辅之以图表,希望能对理解内存结构有所帮助。该区域也称为内存模型的本地区。在中,内存泄露是指对象已不再使用,但垃圾回收未能将他们视做不使用对象予以回收。 本文详细描述了 Java 堆内存模型,垃圾回收算法以及处理内存泄露的最佳方案,并辅之以图表,希望能对理解 Java 内存结构有所帮助。原文作者 Sumith Puri,...
摘要:使用原型,重写了数组的几个简单的方法。我在这抛砖引玉,期待大神更多对象的其他的方法扩展 使用原型,重写了数组的push、pop、shift、unshift几个简单的方法。我在这抛砖引玉,期待大神更多对象的其他的方法扩展 Array.prototype.push = function(){ //this: 1,2,3 //...
摘要:开发原因是一个非常小的类库,通过代码生成来提供高性能的反射处理,自动为字段提供访问类,访问类使用字节码操作而不是的反射技术,因此非常快。 开发原因 Reflec...
摘要:在多线程编程中我们会遇到很多需要使用线程同步机制去解决的并发问题,而这些同步机制就是多线程编程中影响正确性和运行效率的重中之重。这五个方法之所以能指定同步器的行为,则是因为中的其他方法就是通过对这五个方法的调用来实现的。 在多线程编程中我们会遇到很多需要使用线程同步机制去解决的并发问题,而这些同步机制就是多线程编程中影响正确性和运行效率的重中之重。这不禁让我感到好奇,这些同步机制是如何...
阅读 1932·2021-09-22 16:05
阅读 8978·2021-09-22 15:03
阅读 2843·2019-08-30 15:53
阅读 1675·2019-08-29 11:15
阅读 873·2019-08-26 13:52
阅读 2324·2019-08-26 11:32
阅读 1744·2019-08-26 10:38
阅读 2513·2019-08-23 17:19