gpt4 book ai didi

c# - 创建新库或项目时如何设置命名空间?

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:47 24 4
gpt4 key购买 nike

假设您想创建一个新的算法库。

例如:

namespace Com.MyCompanyName.LibraryPathfinding 
{
//...
}

另一个可以导入这个库(包括命名空间)并使用它。

例如:

using Com.MyCompanyName.LibraryPathfinding

namespace Com.YourCompanyName.ProjectX
{
//...
//ProjectX is a game
}

我的问题是:

如果LibraryPathfinding使用了一些类似“PriorityQueue”的util类,如何设置PriorityQueue的命名空间?

(1):

namespace Com.MyCompanyName.LibraryPathfinding.Collections
{
public class PriorityQueue
{
////
}
}

(2) :

namespace Com.MyCompanyName.Collections
{
public class PriorityQueue
{
////
}
}

如果选择 (1),则表示 PriorityQueue 是 LibraryPathfinding 的一部分。

这样做的好处是:

LibraryPathfinding 是完全独立的。

如果您的项目需要寻路,只需导入“Com.MyCompanyName.LibraryPathfinding”

这样做的缺点是:

只要您的项目需要 PriorityQueue,就必须导入“Com.MyCompanyName.LibraryPathfinding”,即使 ProjectX 不需要 Pathfinding。

例如:在 ProjectX 中,AIManager 需要一个使用优先队列的仇恨列表。但是仇恨列表不应该依赖于寻路!

如果选择(2),则可以解决(1)的问题。

这样做的缺点是:

LibraryPathfinding 不会完全独立。 (LibraryPathfinding 是一个封装,它不应该暴露实现细节。)

如果要使用 LibraryPathfinding,则必须导入 Com.MyCompanyName.Collections 和 Com.MyCompanyName.LibraryPathfinding。这意味着:您必须发布两个库(给您的用户)!

如有任何建议,我们将不胜感激。

谢谢。

最佳答案

如果您想使用 LibraryPathfinding,您必须导入 Com.MyCompanyName.Collections 和 Com.MyCompanyName.LibraryPathfinding。这意味着:您必须发布两个库!

这通常是您希望拥有的行为。如果“PriorityQueue”是您将来可能希望在项目中重用的类,您应该将它隔离到一个新项目中——与任何其他相关类一起分组。代码重用是一件好事。

关于c# - 创建新库或项目时如何设置命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28270973/

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