我已经熟悉使用域名创建唯一包名称(即包com.stackoverflow.widgets
)的标准Java包命名约定。但是,我从未见过有关如何为个人项目选择包名的任何建议。我认为这是因为这是个人品味的问题。
那么,您如何选择永远不会投入生产的个人项目的软件包名称(您可能在业余时间尝试使用新框架)。假设您没有可以用来创建包结构的个人网站,那么您(或将要)做什么?你有一个逻辑系统来为业余爱好项目生成新的包名,或者你只是使用简单的丢弃包名如mypackage
?
由于我很想知道不同人的想法是什么,所以我把它变成了一个社区维基。
就我个人而言,我从来没有多想过,但我今晚想和Wicket一起玩,我想到我不清楚我是怎么组织我的爱好项目。对于业余爱好项目(在我看来,至少),一个单独的,独特的包命名约定将成为保持个人和工作相关代码彼此明显分离的好方法。
我在想一个简单的分层命名约定,将我个人项目的源代码保存在一个根文件夹中:
myprojects
作为根文件夹因此,我的Wicket项目将位于包myprojects.learningwicket
中,单元测试将位于包myprojects.learningwicket.tests
中(例如)。
答案 0 :(得分:47)
如果你只是做个人项目而没有其他人会使用这些代码,那么你可以编制一个你喜欢的包名。不要构成以com.
或net.
或其他顶级域名开头的内容,因为这意味着您拥有域名(即使用com.john
作为您的包裹这个名字只是因为你的名字恰好是约翰并不是个好主意。)
如果您要将代码提供给其他人,则应使用全局唯一的包名称,根据Java约定,您应该注册并使用域名。
答案 1 :(得分:25)
我只使用我的姓名缩写:fg.nameofproject.etc
它减少了打字。 它可以随时使用sf.net或com作为前缀。或组织。或com.google ..
由于这个项目是个性化的,所以它就像你的新鲜个性礼品衬衫一样特别 - 它会感觉很好。
答案 2 :(得分:20)
<sarcasm>
呸。任何自尊的程序员都有自己的域名。这显然是一个棘手的问题。每个人都有自己的个人域名! </sarcasm>
: - )
好的,严肃地说,购买自定义域名可能是最简单的选择。每年大约10美元,您可以找到信誉良好的提供商来托管域名和转发电子邮件。
答案 3 :(得分:20)
pmurray_at_bigpond_dot_com.project.package
答案 4 :(得分:15)
我将大部分业余爱好项目存储在Google Code中,因此我只使用项目网站作为包名:com.googlecode.donkirkby.someproject
。
答案 5 :(得分:3)
我认为你已经解决了问题。在这里避免的诱惑是根本不打扰包名。保存几个键击很容易,因为“我只是在编写一些测试代码。”但随后代码变得越来越好,越来越有用,然后你意识到你可以成为一个长期存在的库或应用程序。它可能不是一个图书馆或应用程序离开你的家庭网络,但重点是,你没有想过提前。那是丹麦计算机科学的幽灵 - 如果只是一点点的话,总要提前考虑。
我用于我的爱好代码的命名约定非常类似于你的。我有一个名为“futura”的顶级目录(长期,无聊的原因,为什么这个名字出现)我所有的代码都挂了。我尝试将我的代码组织到包库中,即使它可能是我从未用于其他项目的类或包。我将所有应用程序(即在类中具有void main(String [] args)的任何应用程序)放在futura.app。*文件夹中。我也尝试模仿我自己代码的标准Java库包名称,尽管在某些情况下我因为自己的口味而破坏了约定(即futura.inet用于Internet,而不仅仅是套接字,代码和futura.collections用于非-util stuff。)用David Mamet的话来说:永远是泛化的。 始终是通用化的!
从您过去常常提出的问题来看,我怀疑您同意我的最后一点:您不必将业余爱好者黑客视为企业级项目,但如果您将某些规则带入主场比赛,业余爱好更有价值。
答案 6 :(得分:2)
我的名字是anjan
通常,我使用com.anjan
我有一个自己的幻想公司 - 有时候我会用它
所以,根据你的心情,你可以坚持下去。
答案 7 :(得分:2)
我使用我的OpenID URL,然后附加我的项目名称。例如,com.myopenid.cd1.twitter
是我一直在开发的Twitter客户端的根包。
答案 8 :(得分:2)
我的命名:prj.project_name
。
答案 9 :(得分:1)
我只使用我的名字:surname.initials.xxx,作为简洁和避免碰撞之间的一个很好的组合。如果我选择公开发布代码,我认为这将给出一个合理的无碰撞命名空间。我还有一个我编写的小程序,可以重新打包整个目录树,所以我想我是否需要重新打包才能发布它非常轻松...因此我没有因此而失去太多的睡眠。
在surname.initials.xxx之后,我使用应用程序包的应用程序,库程序包的lib,以及我纯粹试验的东西。
答案 10 :(得分:1)
你对lastname.firstname.project的看法??? 比如luz.marlon.project?
答案 11 :(得分:0)
我想过问同样的问题。到目前为止,我已经使用了前缀com.tehvan,即使我实际上没有公司。