我是用于研究的大型 C++ 库的独立开发人员(我是博士生)。假设该库有一堆实现酷算法的类:Algorithm1
、Algorithm2
等。然后我编写了一堆 C 风格的函数,它们是独立的“脚本”,使用该库来测试最近添加的功能或运行产生情节的模拟,然后我将其包含在非常出色的(我否认)期刊出版物中。库的设计遵循良好的软件工程原则(据我所知和能力),但链接库的“脚本”main.cpp
不遵循任何原则,除了:“完成工作”。
我现在在一个文件中拥有超过 300 个这样的“脚本”(超过 20,000 行代码)。我对此没有任何问题,我仍然非常高效,这确实是最终目标。但我想知道这种方法是否有我刚刚学会忍受的主要弱点。
// File: main.cpp
#include <cool_library/algorithm1.h>
#include <cool_library/algorithm2.h>
...
#include <cool_library/algorithmn.h>
void script1() {
// do stuff that uses some of the cool library's algorithms and data structures
// but none of the other scriptX() functions
}
void script2() {
// do stuff that uses some of the included algorithms and data structures
}
...
// Main function where I comment in the *one* script I want to run.
int main() {
// script1();
// script2();
// script3();
...
script271();
return 0;
}
编辑 1:我在这个过程中有几个目标:
- 最小化启动新脚本函数所需的时间。
- 让所有旧脚本功能触手可及,以供搜索。因此,我可以将这些脚本的一部分复制并粘贴到一个新脚本中。请记住,这不应该是供他人使用的好设计。
- 我不关心脚本文件的编译时间,因为它可以在一秒钟内编译,因为它现在有 20,000 行代码。
顺便说一句,我使用 Emacs 作为我的“IDE”,在 Linux 中,使用 Autoconf/Automake/Libtool 进程来构建库和脚本。
编辑 2:根据建议,我开始怀疑在这种情况下提高生产力的部分方法是否不是重构代码,而是自定义/扩展 IDE 的功能(在我的例子中是 Emacs)。