我正在考虑发布一个用C#编写的类库作为开源。在此之前,我正在尝试进行一些重构,以满足大众的要求:)
我想知道什么是最好的命名空间架构?基本上,我看到以下选项:
现在已经有一些关于Stackoverflow的相关问题,比如this和this,但它们都没有真正回答我的问题。
有什么建议吗?
答案 0 :(得分:6)
我会选择类似的东西:
namespace OpenSourceProjectCodeName.MajorFunctionalArea
例如:
namespace VideoWizardMagicThing.Audio
namespace VideoWizardMagicThing.Audio.Codecs
namespace VideoWizardMagicThing.Video
namespace VideoWizardMagicThing.Video.Codecs
你不必完全厌恶命名空间,你可能只需要一个或两个MajorFunctionalArea。但是,如果不知道项目的结构或它的作用,就很难说。
答案 1 :(得分:0)
如果它是开源的并且会有贡献者,我会选择 MyTool 。
答案 2 :(得分:0)
如果你以后能够负担得起,我会选择 MyName.MyTool 。如果您是唯一编写该工具的人,则需要完全信用,并且在命名空间中使用您的名称不会伤害任何人。
如果你接受新的贡献者,你可以从命名空间中删除你的名字,但如果其他人真正做出了很大的贡献,那么只能 。如果大部分工作都是你的,我会留下来。
答案 3 :(得分:0)
MyTool
存在名称不唯一的问题;你正在寻找名称冲突。如果您不想给自己贴上标签, MyCompany.MyTool
不适用于您的情况。
我实际上更喜欢反转与产品相关的URI的Java惯例。对于公司,这是公司网站。对你来说 - 你有一个博客/个人主页,其地址不太可能很快改变?然后使用名称,TLD和二级域名反转。就我而言: net.madrat.MyTool
。
我认识一些使用TheirName.MyTool
的人,这很好。但是,只要有第二个贡献者,这就成了问题。
答案 4 :(得分:0)
我建议获得MyOrganization并使用它。如果您为工作赚钱,您将需要一个实体,它可以保护您免于承担责任。设置一些东西相当容易。
或者只是使用MyOrganization名称并稍后创建实体,但如果您没有先设置它,则会冒法律名称冲突的风险等。
答案 5 :(得分:0)
你可以做MyToolProject.MyTool。或者,您可以为您的“组织”提出一些创意名称,并将其作为您未来所有开源项目的名称,即使它现在只是一个。然后你可以拥有MyCreativeOrgName.MyTool。
答案 6 :(得分:0)
MyOrganization.Technology 仍然是推荐使用命名空间的方法。
我曾经有类似的问题,我之前的项目是我的业余爱好。所以我刚刚编写了一个开发组的名称(你想要一个简短易读的名称)并开始使用它。
但是,请记住,可用性仍然是关键。例如,这是规则的一个例外。我们的开源Lokad Shared Libraries遵循.NET本身的命名空间(即: System 或 System.Threading )。这是因为我们的开发人员可以使用大量的日常助手和扩展,甚至没有注意到他们正在利用非BCL代码。
它还使得使用声明看起来更好。
答案 7 :(得分:0)
MyTool 听起来很像项目代码/品牌名称?
在这种情况下,如果您希望在不使用您的组织或个人名称的情况下进一步对其进行分类,请在行业或问题域上挂钩,以便解决此问题。
VideoEditing.MyTool
Accounting.MyTool
HomeAutomation.MyTool
答案 8 :(得分:-1)
我最终选择了Idunno。*用于几个项目(我的网站),以及SharpSTS。*用于主要项目(因为这是项目名称)