oop - 牺牲设计和代码质量以与现有模块集成

标签 oop refactoring

问候!

我继承了一个 C#.NET 应用程序,我已经扩展和改进了一段时间。总的来说,这显然是一个匆忙的工作(或者写它的人似乎不如我能干)。该应用程序从嵌入式设备中提取一些数据并显示和操作它。核心是主应用程序表单中的一个通信线程,它执行 600 多行代码方法,该方法在各处调用函数,实现状态机 - 大量 if-state-then-do 类型的代码。与设备的交互是通过全局设置状态/模式并让线程来完成的。 (这只是代码糟糕的一个例子——总体来说它不是很像 OO,它让人想起了编写设备固件的嵌入式 C 代码的风格)。

我的问题是这段代码是应用程序的核心。根本没有记录软件、通信协议(protocol)或设备固件。显然,要继续我的工作,我必须与此代码进行交互。

我想要一些指导,是否值得废弃这段代码并尝试从我可以逆向工程的信息中拼凑出更合理的东西?我无法决定!我不想重构的原因是因为代码已经可以工作了,更改它肯定是一项漫长、费力和不愉快的任务。另一方面,不重构意味着我有时不得不妥协其他模块的设计,以便我可以从这个状态机调用我的代码!

我听说过“如果它没有坏就不要修复它!”,所以我想知道当“它”影响 future 代码的设计时它是否应该适用!任何意见,将不胜感激!

谢谢!

最佳答案

此外,您等待的时间越长,代码库的味道就越差。我的建议是首先创建一个测试套件,您可以根据该测试套件评估您的重构。这使您更容易查看您是在重构还是只是简单地破坏事物:)。

关于oop - 牺牲设计和代码质量以与现有模块集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3020772/

相关文章:

refactoring - 重构产生了一个库。复试?

java - 您是否从任何可以实例化的类中提取接口(interface)?

java - 子类Java中的静态变量

c++ - 如何将数组传递给函数?使用 C++ 作为 OO 类

refactoring - 关于重构的经验数据?

javascript - Node.js 重构 : How to pass object-pointer (here: a socket)?

oop - F# 对象构造函数

python - 奇怪的Python析构函数行为

c++ - 重复的 switch 语句需要重构

unit-testing - 重构 - UnitTest - 遗留代码中的设计三难问题