您对Java中的个人/爱好项目使用什么程序包命名约定?


143

我已经熟悉使用域名创建唯一的包名称(即package com.stackoverflow.widgets)的标准Java包命名约定。但是,对于如何为个人项目选择包名称,我从未见过任何建议。我认为是因为这确实是个人喜好问题。

因此,如何为永远不会投入生产的个人项目选择软件包名称(您可能会在业余时间尝试使用新框架)。假设您没有一个个人网站,可以使用其域来创建您的包裹结构,您将(或将要)做什么?您是否有一个逻辑系统可以为爱好项目生成新的程序包名称,还是仅使用简单的一次性程序包名称mypackage

由于我只是想知道人们对此有何想法,因此我将其设为社区Wiki。

就我个人而言,我从来没有想过,但是我想今晚与Wicket一起玩耍,结果发现我对如何组织自己的业余项目并不清楚。对于爱好项目,至少有一个单独的,不同的软件包命名约定(至少在我看来是这样)将是使个人代码和与工作相关的代码清楚地分开的一种好方法。

我在考虑一个简单的层次命名约定,以将个人项目的源代码保存在单个根文件夹中:

  • 使用myprojects作为根文件夹
  • 追加项目名称
  • 添加任何其他子包名称

因此,我的Wicket项目将在软件包中,myprojects.learningwicket而单元测试将在软件包中myprojects.learningwicket.tests(例如)。


1
常见的,给自己一个个人域名(firstname-lastname.net)并将其用作程序包名称。打包的目的是在全球范围内唯一,因此myprojects并没有真正削减它。
Vladimir Dyuzhev'08年

5
也可以使用.onion域(如onion.duskgytldkxiuqc6.packagename)。只要私钥保持秘密,您就可以控制域名。因此,它可以免费注册(生成),并且是永久性的(与传统域不同)。它符合Java约定的字母,并且可以唯一地标识您。
萨斯坦宁

14
您总是可以创建一个GitHub帐户并使用io.github.username。*。
Bardi Harborow'3

2
@BardiHarborow谢谢,我用了你的建议。
尼克·沃伦金

3
@ GabrielBB,GitHub Pages允许您在yourusername.github.io上托管HTML和Jekyll网站,因此,与github.com的子域相比,github.io的子域更“保证”与GitHub用户相对应(可以用于内部。 GitHub项目随时可用)。
Bardi Harborow,2016年

Answers:


49

如果您只是在做个人项目,没有其他人会使用该代码,那么您可以组成自己喜欢的程序包名称。但是,不要组成以com.net.或其他顶级域名开头的内容,因为这暗示您拥有该域名(即,com.john仅因为您的名字恰好是John才用作包名)不是一个好主意。 。

如果要将代码提供给其他任何人,则应使用全局唯一的程序包名称,根据Java约定,这意味着您应该注册并使用域名。


1
因此,如果我要像处理包裹名称那样处理包裹名称,com.xyz应该在某个地方注册该包裹名称吗?PS xyz是我的客户。
普拉萨德2014年

9
我想知道是否可以使用我的github ID和github域?例如com.github.mygithubid.myproject
Kirill G.

2
@KirillG。我会建议不要这样做,因为GitHub ID可以随时随地更改。当然,任何领域都可以更改,但不那么容易或经常更改(无论如何通常都不是)。虽然我猜对于爱好项目来说还可以。
2015年

26

我只用我的缩写:fg.nameofproject.etc

它减少了打字。可以随时使用sf.net或com作为前缀。或组织。或com.google ..

由于该项目是个性化的,因此就像您刚按下的个性化礼品衬衫一样特别-它将感觉很好。


42
bond.james.007
点击Upvote

19
@click根据可能会遵循的指南bond.james._007 -没有相同的铃声...:-{
corsiKa 2013年


19

<sarcasm>呸。任何自重的程序员都将拥有自己的域名。这显然是一个技巧问题。每个人都有自己的个人域名!</sarcasm>:-)

好的,实际上,购买自定义域名可能是最简单的选择。每年大约10美元,您可以找到信誉良好的提供商来托管域并转发电子邮件。


18
足够奇怪的是,这也会增强您的自信心。
jamesh

26
一个好的答案,但是一个刚开始的程序员可能不想为了跟一些教程网站或视频上的如何使用关闭按钮创建GUI而购买网站。
Jochem Kuijpers 2014年

17

我将大部分爱好项目存储在Google Code中,因此我仅使用项目站点作为程序包名称:com.googlecode.donkirkby.someproject


8
我们会多么盲目地看不到我们行为的愚蠢?!
Joey Sabey 2015年

1
您想念Google Code @Joey吗?在过去的几年中,我主要使用GitHub,因此在关闭之前,我不得不将一些旧项目从Google Code中移出。
唐·柯比

那么,您是否对软件包进行了重命名,保留了googlecode名称或...?
serv-inc

1
自从我移动@ serv-inc以来,我再也没有使用过任何旧代码。两种选择均有效。
Don Kirkby

3

我的名字叫安让

通常,我使用com.anjan

我有自己的幻想公司-有时我会用

net.sf.是使用sourceforge的传统(如休眠和其他软件包所示)。

因此,根据您的心情,您可以做到这一点。


13
除非您还拥有anjan.com,否则我认为您这样做是完全错误的。
弗雷德里克

7
幸运的是,@ Fredrick,看来anjan.com不会很快发布任何库。
corsiKa 2013年

1
@corsiKa:你是对的,只要我不发布任何东西,我就可以。:-)
anjanb 2013年

3
@anjanb好吧,我去了他们的网站。他们做宠物食品。我不是专家,但是大多数宠物食品公司都不发布很多软件库=)
corsiKa 2013年

3

我认为您已经解决了。这里要避免的诱惑是根本不用去理会软件包名称。节省一些击键很容易,因为“我只是在编写一些测试代码。” 但是随后代码变得又好又有用又庞大,然后您意识到您可能为长期存在的库或应用程序打下了坚实的起点。它可能不是离开家庭网络的库或应用程序,但是重点是,您没有想过。那就是丹麦计算机科学的幽灵-即使只有一点点,也要始终考虑。

我用于爱好代码的命名约定与您的非常相似。我有一个名为“ futura”的顶层目录(该名称之所以出现的冗长而无聊的原因),我的所有代码都无法使用。我确实尝试将我的代码组织到程序包库中,即使它可能是我从未在其他项目中使用过的类或程序包也是如此。我将所有应用程序(也就是说,类中具有main(String [] args)的void的所有应用程序)放置在futura.app。*文件夹中。我还尝试模仿自己代码的标准Java库包名称,尽管在某些情况下,由于我自己的喜好而违反了约定(例如,对于Internet来说是futura.inet,而对于非Internet不仅仅是套接字,代码和futura.collections)。 -util的东西。)释义David Mamet:总是泛化。 总是泛化!

从您过去提出问题的方式来看,我怀疑您也同意我的最后一点:您不必将业余黑客视为企业级项目,但是如果您将某些规则带入家庭游戏中,业余爱好更有意义。


2

我使用我的OpenID URL,然后附加项目的名称。例如,com.myopenid.cd1.twitter是我一直在开发的Twitter客户端的根软件包。


我喜欢这个,但是后来我意识到它不再存在。:( janrain.com/myopenid-service-ends “截至2014年2月1日,MyOpenID服务已关闭。”
successhawk


1

我只使用我的名字:surname.initials.xxx,作为简短和避免碰撞之间的一个很好的组合。我认为,如果我选择公开发布代码,它将提供合理的无冲突命名空间。我还写了一个小程序,它可以重新打包整个目录树,所以我认为如果需要重新打包才能发布它就很轻松了……因此,我并没有为此付出太多时间。

在surname.initials.xxx之后,我将其中一个应用程序用于应用程序软件包,将lib用于库软件包,将tst用于我纯粹在尝试的东西。


1

您对lastname.firstname.project的看法?像luz.marlon.project吗?


16
这可能对您有用,但是当约翰·史密斯和鲍勃·琼斯想在某天发布代码时可能会发生冲突。
比尔蜥蜴

0

我考虑过要问同样的问题。到目前为止,即使我实际上没有公司,我也使用前缀com.tehvan。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.