12得票11回答
如何激励团队致力于遗留产品的工作

我们是一个团队,正在处理相当古老的代码,这些代码是用最初编程语言编写的。由于团队成员接受了最新技术的培训,现在他们被安排去处理旧代码,他们感到不满。如何激励他们也能投入到旧代码的工作中呢?

11得票7回答
使用单元测试进行实际重构

阅读了重构:改善现有代码的设计的前四章后,我开始进行第一次重构,但很快就遇到了难题。这是由于在开始重构之前,您需要在旧代码周围放置单元测试。这可以确保您的重构没有改变原始代码所做的事情(只是更改了执行方式)。 那么我的第一个问题是:如何对旧代码中的方法进行单元测试?如何在一个500行(如果我...

11得票18回答
我何时需要停止使用设计模式?

我的同事们都疯了,因为我总是想重写已经运行正常的代码,因为我想用设计模式替换一些旧的设计。尽管我觉得这样可以改进现有的代码,但我感到有些偏执,并试图在任何地方使用它们,甚至用一个设计模式替换另一个。我的一些同事说,只要旧代码能够工作,就不要动它。 什么时候应该停止使用它们?你如何划分需要被更...

11得票5回答
遗留代码中的泛型

我们的代码库刚刚升级到Java 5,已经在专注于发布Java 5版本的组件中使用了泛型,但其余代码当然充满了原始类型。我已将编译器设置为为原始类型生成错误,并开始手动清除它们,但按照目前的速度进行下去需要很长时间(大约有2500个错误)。即使使用Eclipse的“推断通用类型”快速修复,它也总...

10得票2回答
全局.Micrsoft.VisualBasic.ApplicationsServices...未定义 错误 BC30002。

我正在将一些旧的遗留VB应用程序从.NET Framework转换为.NET 5,并已经解决了大部分问题,但是以下这些问题让我感到困惑: Error BC30002 Type 'Global.Microsoft.VisualBasic.ApplicationServices.Applic...

10得票6回答
如何为遗留API/框架实现大量复杂的包装器(C++宏 vs. C++模板 vs. 代码生成器)?

我们使用VC6编译器实现的非常老旧的遗留系统,现在我们正在进行代码重构。 我们还切换到了VC9编译器。 我们使用外部专有框架,这也是遗留代码和不可单元测试的。 为了使我们的代码可单元测试,我们引入了接口和包装器来封装框架类(提示:参见Martin Fowler的“与遗留代码共舞”): ...

10得票2回答
单表继承和命名空间类的'type'值问题

在将Rails 2.3.18迁移到Rails 3.2.x时,我遇到了type列的命名问题。 这里定义了一个关系。app/models/reservation.rb class Reservation end class Reservation::Guest < Reservatio...

9得票1回答
编译单元中只有一个未命名的命名空间吗?

我继承了一段可怕的遗留代码,其中包括大约1000行实用程序类定义,需要在源文件中出现在“真正”的代码之前。为了避免与可能还有相关遗留类的其他模块发生冲突,我将实用程序类放入了一个未命名的命名空间中: namespace { class OldUtils { OldUt...

9得票1回答
如何将Perl代码标记为已弃用?

在我的项目中,我正在准备逐步从旧代码转移到新的、经过适当设计和测试的模块。由于并不是每个程序员都会密切关注我的工作,因此我希望在使用旧代码时发出警告。我也非常希望能够输出有关如何移植旧代码的建议。 我找到了两种方法: 1. Attribute::Deprecated,对于函数来说很好用,但...

9得票4回答
如何在遗留代码上使用FxCop?

有没有人在将FxCop引入遗留代码方面有经验?我们希望如果有人引入违反规则的代码,我们的构建就会失败。但眼下,这是不可能的,因为遗留代码有超过9000个违规行为。 我所知道的唯一抑制错误的方法是通过SuppressMessage属性,但它只适用于方法和GeneratedCodeAttribu...