问题标签 [legacy-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1342 浏览

unit-testing - Lucene 索引的单元测试

我正在研究在另一个索引中建立流行术语索引的遗留代码。没有单元测试,索引过程很痛苦,因为第一个索引需要很长时间才能构建。

我想以不同的方式构建第二个(流行术语)索引。是否有测试 Lucene 索引是否正确创建的最佳实践?

编辑>>根据@Pascal 的建议,我使用的是 RAMDirectory,然后为了测试我刚刚编写的索引,我设置了一个 indexReader 并遍历术语结果,打印出每个术语以确保数据看起来正常。

代码:

如果索引真的很大,我让它运行一段时间然后中途停止它。

此外,如果您想更彻底地检查索引, Luke是一个很好的工具……我只是在寻找快速的东西。

欢迎任何其他想法!

0 投票
2 回答
4911 浏览

unit-testing - 如何使用遗留代码实现测试驱动开发?

现状:数百万行代码,一百多名开发人员,缺陷频发。我们想避免重复的缺陷,我们想改进代码设计(谁不呢?)。

测试驱动开发(首先是单元测试,然后是代码)听起来很理想:为每个功能编写一个测试用例。

但是,写了这么多代码,怎么实现TDD呢?你从哪里开始 - 低级功能?

还是我们开始 TDD 为时已晚?

0 投票
5 回答
238 浏览

php - 向急需重构的代码库添加功能

我正在开发一个有点难以使用的系统。它 99% 未记录,不遵循最佳实践并且相当难以理解(全局变量、跨越 50 行的方法、eval 滥用等)。不幸的是,我对代码库还很陌生,我需要添加功能。

我确信那里有我可以重用的代码,但我必须在最后期限之前完成,而且我担心花在挽救上的时间最终会让我匆匆忙忙。从长远来看,什么更好?我的一部分想要尽可能多地重用,但另一部分说我应该专注于从头开始编写新功能,冒着重复的风险(计划在我有更多时间花在现有代码上时进行重构) ? 我倾向于后者,但想听听一些意见。

谢谢!

0 投票
1 回答
173 浏览

.net - WCF:包装遗留 API 问题

我必须用 WCF 服务包装旧的 .net 程序集 API(类和接口集)。服务被设想为代理,它将调用委托给现有的类,几乎不需要额外的工作。

所以我添加[ServiceContract] interface了公开处理现有结构和类的方法。但是 wcf-proxy-generator (svcutil) 删除了一些字段(声明为只读)并且对于别名不够聪明(例如: public bool Boolean1 { get { return Booleans[0] }}变成bool Boolean1 { get; set; })。

我决定复制这些遗留类以消除混乱。现在有一些现有类的合同安全版本,WCF 服务具有额外的代码,可以将合同安全类转换为旧类,反之亦然。

您会建议复制所有遗留类还是只为有问题的类进行转换?可能我错过了一些额外的代理生成器参数。

先感谢您!

0 投票
4 回答
664 浏览

terminology - 遗留错误复制的术语?

出于好奇,是否有人知道在旧系统的新实现中复制错误以保持与依赖错误功能的旧客户端的向后兼容性的术语?如果它包含必须对不正确的行为进行逆向工程以便正确复制不符合规范的内容的含义,我会特别感兴趣。

0 投票
3 回答
55 浏览

php - 需要一些简单的帮助来理解一些 PHP5 之前的代码

我从另一个问题转向nstrees,并且一直在研究脚本。它最后一次更新是在 2005 年,依赖于一些显然已经被弃用的东西,HTTP_POST_VARS因为我做 PHP 才不到一年的时间,所以我并不立即熟悉这些东西。

无论如何,编码风格在我的菜鸟眼中似乎很奇怪,我想就这个函数的哪些部分提出第二意见:

在上面的代码中,我将我不太确定的地方标记为// problem area x,其他一切都是原始脚本。

关于 PA1,是否只是检查查询是否成功运行?

而 PA2,NetBeans 给了我一个警告“可能的意外分配,应避免在条件下分配”。...所以我立即将其从 更改===当然打破了脚本,呵呵。

想一想,我猜这只是另一个错误检查$res,这次是为了确保确实返回了一些数据?

最后,这是奇怪的 PHP 还是我太幼稚而无法理解它?

谢谢老兄(tte)!

0 投票
2 回答
301 浏览

c# - C# 中的扩展方法:为什么会这样?

我有点困惑为什么这不会出错。我在一些过时的遗留软件深处发现了这段代码,并惊讶地发现它可以工作。

我对扩展方法的经验是这样称呼它:

这是否仅因为它也是静态方法而起作用?这是常见的做法,只是我还没有看到的东西,还是我应该用火杀死的过时的遗留代码?

0 投票
1 回答
752 浏览

objective-c - Can't run Cocoa UnitTests because of Garbage Collector disabling

I'm trying to add some UnitTests to a bunch of Cocoa Legacy code. I created a Unit Test Bundle, and added all source and frameworks needed, but the build fails with this message:

I tried to enable garbage collector, but another error appears:

I wonder if it's possible to force Unit Test to run without Garbage Collection: Any clue?

0 投票
1 回答
112 浏览

project-management - 长寿命大项目代码分配责任

假设您是大型项目的项目经理,其中包含大量长期开发的代码。对于代码团队的某些部分有知识,对于其他部分 - 没有。

以某种明智的方式在队友之间分配责任是件好事。其作者仍在团队中的代码没有问题。但是应该开发这种方法,以避免每次修改旧代码时都要做出长时间的决定来任命该人。这可能会导致长时间的讨论并花费大量时间。

您可以建议哪些方法、提示、技术、流程以高效、透明和合理的方式将代码分配给新团队而不负责?

我想补充一点,我暂时不试图让所有开发人员都了解项目的所有部分,只是由负责人覆盖所有代码区域。

0 投票
14 回答
2212 浏览

java - 对糟糕的系统设计进行代码重构

我是一名初级软件工程师,我的任务是接管旧系统。根据我的初步评估,这个系统有几个问题。

  1. 意大利面条代码
  2. 重复代码
  3. 10k 行及以上的类
  4. 使用 log4j 的误用和过度记录
  5. 糟糕的数据库表设计
  6. 缺少源代码控制 -> 我为此设置了 Subversion
  7. 缺少文件 -> 我不知道业务规则,除了阅读代码

我应该如何去提高系统的质量并解决这些问题?我可以考虑使用静态代码分析软件来解决任何不良的编码实践。

但是,它无法检测到任何不良的设计问题或问题。我应该如何逐步解决这些问题?