gpt4 book ai didi

c++ - 您对如何包装内部库以将其交付给客户有什么建议吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:30 26 4
gpt4 key购买 nike

在我的公司,我们使用跨平台的实用程序库来提供很多服务。

这包括跨平台代码(例如包装 Win32 或 pthread API 的线程类)或每个公司特定的代码(例如处理我们的服务器和客户端应用程序之间的专有通信协议(protocol)的类)。

我们需要将这些功能的一部分交付给客户,该客户同意使用与库所使用的相同的编译器和编译器选项。

目前,我的设计重点是确保我们库的每个版本的接口(interface)都与以前的接口(interface)二进制兼容:

  1. 交付 DLL/SO 库
  2. 使用简单明了的命名约定(灵感来自 Java camelCaseNaming 等)
  3. STL的使用
  4. 使用全局命名空间(并在任何宏前加上明确的名称以避免名称冲突)
  5. PImpl-ing 每个需要用到的类
  6. Doxygen-ing 一切(并将“公共(public)部分”交给客户)
  7. 简化和统一我们的界面
  8. 我们的 PImpl 类中没有虚方法
  9. 没有内联代码,除非有异常(即使是常量也是导出的常量值,在编译后的源代码中定义,并简单地在公共(public)头文件中声明)
  10. 实用程序/间接函数的异常内联代码,内部代码不多(例如,交换函数将被内联,调用它交换的对象的非内联交换方法)
  11. 一些没有实际代码的简单“值类”的特殊内联代码,以避免不必要的开销(例如,将内联复数类)
  12. 通过内联代码(意味着客户可以根据自己的需要重用/修改它)提供高级服务(调用所描述的 PImpl 类)

我的列表是否完整,或者我是否遗漏了一些可以简化 future 维护/演进的内容?

我的观点有误吗?

最佳答案

Facade Pattern

我用它来为大型子系统创建“编程接口(interface)”。根据需要创建一个或多个。

关于c++ - 您对如何包装内部库以将其交付给客户有什么建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3533196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com