gpt4 book ai didi

c++ - 将功能放入 API 或让开发人员自己制作的标准

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:31 25 4
gpt4 key购买 nike

<分区>

我正在定义一个抽象基类作为 API 的一部分,供其他开发人员使用,这有点像定义 Android API 并让开发人员使用它来制作手机应用程序。 API 的创建者(也就是我)何时应提供特定功能,创建者何时应将其留给开发人员(即 API 的用户)来定义该功能?

这是一个相关的例子:假设我正在定义 MyObj 的一般树(用户可以在其中创建从 MyObj 派生的类并有 child , parent , 并且可以通过类型和值进行过滤。

class MyObj
{
public:
// These must be provided
MyObj const * parent();
bool setParent(MyObj const * i_obj);

std::vector<MyObj const * > children() const;
bool addChild(MyObj const * i_obj);
bool removeChild(MyObj const * i_obj);


// The following functions can be implemented
// by using the functions listed above.
// Should I provide them (by leaving them in the class or
// defining them as utility functions, etc), or should I let
// the developers define them?
MyObj const * root() const;
bool hasChild(MyObj const * i_obj) const;
std::vector<MyObj const * > descendants() const;
std::vector<MyObj const * > childrenFiltered(FilterType i_type, FilterValue i_val) const;
std::vector<MyObj const * > descendantsFiltered(FilterType i_type, FilterValue i_val) const;

private:
std::vector<MyObj * > m_children;
MyObj * m_parent;
};

需要考虑的事项:

  • 如果它涉及使用私有(private)变量以致于开发人员(API 的用户)不能自己提供该功能,那么我必须提供它。
  • 如果某些功能将被许多开发人员(API 的用户)使用,请自行定义。这样,开发人员 A 就不需要开发开发人员 B 开发的同一套极其有用的实用功能;他们都会使用我提供的。
    • 另一方面,也许最好不要尝试预测如何使用基类,而是提供允许开发人员做任何他们想做的事所需的最少功能。
  • 如果该功能是核心功能,请提供它(即使它可以仅使用其他公共(public)功能来实现)
    • 确定某事是否是核心功能似乎是一件相当模糊的事情

相关帖子:

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