22得票6回答
在一个大型项目中开始进行单元测试。

请问有人能推荐一些最佳实践,来解决开始为一个大型现有代码库编写单元测试的问题吗?我目前面临以下问题: 代码库非常庞大 没有现成的单元测试代码 类之间高度耦合 复杂的 OM(不太可能做到简化 - 这是一个复杂的业务领域) 缺乏编写单元测试 / TDD 的经验 依赖数据库 依赖外部资源 (We...

34得票7回答
PHP中的死代码检测

我的一个项目代码非常混乱 - 有很多重复的代码和死代码 一段时间以前,该项目没有进行单元测试,但现在我们正在尝试以T.D.D.方式编写所有新代码,并通过单元测试来降低技术债务,同时使用“测试后”技术覆盖“旧”代码。 业务逻辑的复杂性相当高,有时候甚至没有人能够回答某些方法是否被使用。 如...

9得票1回答
PHP变量声明不正确。

调试旧代码时,我遇到了一个奇怪的问题。这个旧代码正在被迁移到PHP 7.2版本。我不知道它最初是为哪个版本的PHP编写的,但它可以在PHP 5.6中正常运行。 以下是我遇到的问题示例... $variable = ''; $variable['key'] = 'Hello World!';...

19得票3回答
在单元测试期间重置类的静态变量

我正在尝试为一份遗留代码编写单元测试。我要测试的类有几个静态变量。我的测试用例类有几个@Test方法,因此它们都共享相同的状态。 是否有办法在测试之间重置所有静态变量? 我想到的一个解决方案是显式地重置每个字段,例如:field(MyUnit.class, "staticString")....

7得票7回答
你还保留着哪些古老的编码技术?

在我病假几天且无聊至极的时候,我决定尝试挖掘一些旧代码。我找到了我写过的一些古老的Atari ST二进制版本,但是我找不到任何源代码。我确实设法从传说中的x2ftp网站的存档中找到了我很久以前用汇编语言编写的旧ModeX库:http://ftp.lanet.lv/ftp/mirror/x2ft...

14得票1回答
预处理器宏作为其他宏的参数

以下C++代码在GCC(4.0.4)上编译并按照程序员的意图正常工作。#define FOO(x,y,z) ((x)*(y)*(z)) #define BAR(x) FOO(x,1) #define BAZ 3,7 int main() { return BAR(BAZ); /* i...

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

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

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

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

25得票13回答
遗留代码噩梦

我继承了一个项目,其中类图与一盘意大利面上的蜘蛛网非常相似。在过去两个月里,我编写了约300个单元测试来为主要可执行文件提供安全保障。 我随时可以接触到我的敏捷开发书库,其中包括: - 《Working Effectively with Legacy Code》 - 《Refactorin...

68得票8回答
遗留的C/C++项目中死代码检测

如何在C/C++代码中检测死代码?我有一个相当大的代码库需要处理,其中至少有10-15%是死代码。是否有基于Unix的工具可以识别这些区域?有些代码片段仍然使用大量的预处理器,自动化过程能够处理吗?