命名 API,暗示内存所有权的转移?
Naming APIs, to imply transfer of memory ownership?
我有一个数据结构。它提供 APIs 用于从其内部集合中添加或删除项目。在内部,该结构使用 std::unique_ptr
来维护每个项目的生命周期。这意味着 "adding" 项 隐式地 将内存的所有权转移到我的数据结构。
我在 API 的评论中清楚地记录了这一点,但我想知道;有没有我可以附加到我的 API 上的实际名称或动词,以提醒人们注意这个重要的副作用?
例如:AddItem(Item* item)
似乎并没有充分暗示所有权的转移。 RegisterItem
、CreateItem
、TransferItem
似乎都暗示着不同的东西。
传达所有权转让的方式是使用 std::unique_ptr
作为参数:
AddItem(std::unique_ptr<Item> item)
我有一个数据结构。它提供 APIs 用于从其内部集合中添加或删除项目。在内部,该结构使用 std::unique_ptr
来维护每个项目的生命周期。这意味着 "adding" 项 隐式地 将内存的所有权转移到我的数据结构。
我在 API 的评论中清楚地记录了这一点,但我想知道;有没有我可以附加到我的 API 上的实际名称或动词,以提醒人们注意这个重要的副作用?
例如:AddItem(Item* item)
似乎并没有充分暗示所有权的转移。 RegisterItem
、CreateItem
、TransferItem
似乎都暗示着不同的东西。
传达所有权转让的方式是使用 std::unique_ptr
作为参数:
AddItem(std::unique_ptr<Item> item)