首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Middleware API的最佳实践是什么?

Middleware API的最佳实践是什么?
EN

Stack Overflow用户
提问于 2008-09-15 12:37:03
回答 4查看 4.1K关注 0票数 3

我们正在开发一个中间件软件开发工具包,用C++和Java编写,作为库/动态链接库,供游戏开发人员、动画软件开发人员、阿凡达开发人员使用,以增强他们的产品。

我想知道的是:对于这些类型的API的开发,是否有标准的“最佳实践”?

我在考虑可用性、可读性、效率等。

EN

回答 4

Stack Overflow用户

发布于 2008-09-16 11:48:57

通过在Windows上使用第三方库,我学到了以下两件事:

尝试将您的库作为DLL而不是静态库进行分发。这使得不同的c编译器和链接器之间具有更好的兼容性。visual c++中静态库的另一个问题是,运行时库的选择可能会使库与使用不同运行时库的代码不兼容,最终可能需要为每个运行时库分发一个库版本。

如果可能,请避免使用c++。在不同的编译器之间,c++名称的损坏有很大的不同,并且为visual c++构建的库不太可能链接到windows中的其他构建环境。当涉及到C语言时,事情要好得多,特别是如果你使用dll的话。

如果您真的想要获得c++的好部分(例如通过构造函数和析构函数进行资源管理),那么可以在c++中构建一个方便的层,您可以将其作为源代码分发,从而隐藏您的c函数。因为用户拥有源代码并在本地编译它,所以它在本地环境中不会有任何名称篡改或abi问题。

在不太了解从Java调用c/c++代码的情况下,由于名称混乱的问题,我希望使用c代码比使用c++代码容易得多。

“不完美的C++”这本书中有一些关于库兼容性的讨论,我发现这对我很有帮助。

票数 3
EN

Stack Overflow用户

发布于 2008-09-15 14:31:52

yrp提到的Josh Bloch的视频是一个经典的视频-我同意这个建议。

一些一般的指导原则:

  1. 确实主要根据接口、工厂和生成器来定义您的应用编程接口。
  2. 确实明确指定了哪些包和类是该应用编程接口的一部分。
  3. 确实提供了专门用于针对该应用编程接口进行编译的jar。
  4. 并不严重依赖继承或模板方法模式-随着时间的推移,这会变得脆弱和损坏。

不要使用单例模式,或者至少要极其谨慎地使用它。H210<代码>H111创建包和类级javadoc,解释用法和概念。<代码>H212<代码>G213

票数 1
EN

Stack Overflow用户

发布于 2008-09-15 12:43:12

有很多方法可以设计apis,这取决于您要解决的问题。我认为这个问题的完整答案值得写一整本书,比如the gang of four patterns book。对于Java,以及一般的面向对象编程,我推荐使用Effective Java 2nd Edition。第一个是通用的和许多流行的编程模式,当它们应用时,以及它们的好处。Effective Java是以Java为中心的,但它的某些部分足够通用,可以应用于任何编程语言。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档