在库中拆分实用程序功能以最大化可重用性的最佳方法是什么?

时间:2010-02-09 18:28:44

标签: c++ mfc winapi

3 个答案:

答案 0 :(得分:1)

就个人而言,我会在功能上细分。一个库中的字符串操作。另一个中的积分类型(除了可能将char放入字符串lib中)

我肯定会保持平台相关的东西远离非平台相关的东西。供应商特定的东西远离非供应商特定。这可能需要两个甚至三个字符串库。

也许你可以使用这个范例“它需要MFC吗?”任何需要mfc的东西都应该分开。然后转到“它需要窗口”再次做一些分裂。等等...

毫无疑问,一些项目将要求所有库都必须在VC ++中编译,并且只能在Windows上运行,这就是它的方式。其他项目很乐意在linux上使用一部分库进行编译,并可以与gcc编译。

DC

答案 1 :(得分:0)

如果在公共接口中仅使用conformat类型,并将接口与实现分开,则这将成为一个无问题。

请记住,当您引入这样的功能时:

std::string ProcessData();

...并将此源代码放在一个模块中,该模块与将调用它的代码分开(例如,在DLL中),打破了单独的接口与实现的命令。这是因为STL是一个源代码库,每个使用库函数的编译器都可以并且将为您使用的实用程序提供不同的实现和不同的二进制布局。

答案 2 :(得分:0)

在一个非常含糊的回答中,KISS是最好的政策。但是,似乎代码已经走得太远而且已经达到了不可逆转的程度。这是不幸的,因为你想要做的是拥有独立的库,这些库是自治实体,这意味着它们不依赖于任何外部的东西。您可以为其他帮助程序或其他任何内容创建MFC帮助程序函数库和另一个库。然后你决定你想要哪些以及何时。所有依赖项都在每个库中,它们是独立的。

然后它只是包含或不包含库的问题。

此外,如果在某些情况下只需要某些内容,则使用条件包含在头文件中也可以正常工作。但是,我仍然不能完全确定我是否正确解释了问题。