【发布时间】:2012-11-24 06:15:35
【问题描述】:
我是一个用于研究的大型 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 )。
【问题讨论】:
-
你的博士课程是什么? (在什么领域)??您希望其他人使用您的图书馆吗?
-
它是一组用于优化无线网络各个方面的算法。这是我发表的一篇示例论文:goo.gl/lRXtP我确实希望其他人使用该库,但“脚本”函数不是该库的一部分,它们基本上是如何使用该库的个别示例。
-
那么,我认为我使用一些真正的脚本语言的建议是有道理的。
标签: c++ design-patterns coding-style main