关于包装第三方库的建议

tr9*_*9sh 1 c c++ api

我作为一家公司的计算机视觉部门的软件开发人员已经工作了一年.我的主要工作是将第三方软件集成到一个框架中,所以我通常最终编写包装库,因为很多这个第三方软件不能按我们希望的方式工作(不是线程安全,a*中的痛苦)*使用等).

通常我只是包装整个库并保护对具有互斥的库的调用(线程安全在某种程度上是大多数外部库的主要问题).我非常喜欢这样做,因为它会让你进入很多有趣的场景,你会看到很多有趣的代码.但是,我经常认为我没有正确地做到这一点,或者我的实施并不是很好.我觉得我缺乏某种关于如何正确地做这样的事情的设计知识.

基本上我想知道是否有任何关于设计一个适当的'API ontop of broken API'的好的指导方针或提示,或者如果这总是非常hackish和丑陋.

Aid*_*ell 5

前几天我会在这里引用另一个问题的答案:

  1. 您当前的方法是否通过测试?
  2. 它足够快吗?

如果是的话,继续做你正在做的事情.

作为备选

只需确保您的新API包含预期的功能以及原始的常规意外功能.同时确保它呈现"适合目的"的重新呈现.在FOSS项目中查看C++ C++包装,例如GTK/GTK for C++(它只包装前者).

如果API被破坏,修复它并提交补丁......加入第三方(我假设有权访问来源意味着他们不介意这一点)......你可以重写一些他们的API将"包装友好"并建议他们合并一些更改.如果有问题,请修理它.

对它来说并不多,只需用A包裹A并确保B执行A应该使用的或者用于.