创建新库或项目时如何设置命名空间?
How to set namespace when you create a new library or project?
假设您想创建一个新的算法库。
例如:
namespace Com.MyCompanyName.LibraryPathfinding
{
//...
}
另一个可以导入这个库(包括命名空间)并使用它。
例如:
using Com.MyCompanyName.LibraryPathfinding
namespace Com.YourCompanyName.ProjectX
{
//...
//ProjectX is a game
}
我的问题是:
如果 LibraryPathfinding 使用了一些类似于 "PriorityQueue" 的 util class,如何设置 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" 是一个 class,您可能希望在将来的项目中重用它,您应该将其隔离到一个新项目中 - 与任何其他相关的 class 一起分组。代码重用是一件好事。
假设您想创建一个新的算法库。
例如:
namespace Com.MyCompanyName.LibraryPathfinding
{
//...
}
另一个可以导入这个库(包括命名空间)并使用它。
例如:
using Com.MyCompanyName.LibraryPathfinding
namespace Com.YourCompanyName.ProjectX
{
//...
//ProjectX is a game
}
我的问题是:
如果 LibraryPathfinding 使用了一些类似于 "PriorityQueue" 的 util class,如何设置 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" 是一个 class,您可能希望在将来的项目中重用它,您应该将其隔离到一个新项目中 - 与任何其他相关的 class 一起分组。代码重用是一件好事。