151

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

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

因为我只是想看看不同的人对此有什么想法,所以我把它做成了一个社区维基。

就我个人而言,我从来没有考虑过太多,但我今晚想和Wicket一起玩,我突然想到我并不清楚我想如何组织我的爱好项目。为爱好项目(至少在我看来)一个单独的、不同的包命名约定将作为一种很好的方式来保持个人和工作相关的代码彼此清楚地分开。

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

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

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

4

12 回答 12

50

如果你只是在做没有其他人会使用代码的个人项目,那么你可以组成一个你喜欢的包名。但是不要编造以com.ornet.或其他顶级域开头的东西,因为这意味着您拥有该域名(即com.john,仅仅因为您的名字恰好是 John 而使用作为您的包名称不是一个好主意) .

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

于 2008-11-15T05:01:47.233 回答
28

我只使用我的姓名缩写:fg.nameofproject.etc

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

由于该项目是个人款待,因此它就像您新熨的个性化礼品衬衫一样特别 - 感觉很好。

于 2008-11-15T06:48:33.790 回答
20

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

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

于 2008-11-17T18:48:32.197 回答
20
pmurray_at_bigpond_dot_com.project.package
于 2009-02-19T08:55:15.110 回答
17

我的大部分爱好项目都存储在 Google Code 中,所以我只使用项目站点作为包名:com.googlecode.donkirkby.someproject.

于 2008-11-15T06:37:32.080 回答
3

我叫安然

通常,我使用 com.anjan

我有自己的幻想公司——有时我会使用它

sourceforge 的传统(如 hibernate 和其他软件包所示)是 net.sf.*

所以,根据你的心情,你可以去。

于 2008-11-15T06:41:21.010 回答
3

我想你已经解决了。这里要避免的诱惑是根本不关心包名。节省一些击键很容易,因为“我只是在编写一些测试代码”。但是随后代码变得很好、有用并且很大,然后你意识到你有一个可能是一个长期存在的库或应用程序的良好开端。离开您的家庭网络的可能不是图书馆或应用程序,但关键是,您没有提前考虑。这就是丹麦计算机科学的鬼魂——总是提前思考,哪怕只是一点点。

我用于爱好代码的命名约定与您的非常相似。我有一个名为“futura”的顶级目录(这个名字出现的原因很长,很无聊),我的所有代码都挂在上面。我确实尝试将我的代码组织到包库中,即使它可能是我从未用于另一个项目的类或包。我将所有应用程序(即类中具有 void main(String[] args) 的任何应用程序)都放在 futura.app.* 文件夹中。我还尝试为我自己的代码模仿标准 Java 库包名称,尽管在某些情况下,由于我自己的喜好,我打破了惯例(例如,futura.inet 用于 Internet,而不仅仅是套接字、代码和 futura.collections 用于非-util 的东西。)套用 David Mamet 的话说:总是泛化。 总是泛化!

从您发布问题的态度来看,我怀疑您也同意我的最后一点:您不必将业余爱好者黑客视为企业级项目,但如果您将一些纪律带到家庭游戏中,爱好更有价值。

于 2008-11-15T07:16:17.807 回答
3

我的命名:prj.project_name.

于 2012-02-11T16:16:40.360 回答
2

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

于 2009-05-31T18:06:27.247 回答
1

我只是使用我的名字:surname.initials.xxx,作为简洁和避免碰撞之间的一个很好的组合。我认为如果我选择公开发布代码,这将提供一个合理的无冲突命名空间。我还编写了一个小程序,它可以重新打包整个目录树,所以我想我是否需要重新打包以发布它是非常轻松的......因此我没有在它上面浪费太多的睡眠。

在 surname.initials.xxx 之后,我将 app 用于应用程序包,将 lib 用于库包,将 tst 用于我纯粹在试验的东西。

于 2008-11-16T04:45:45.923 回答
1

你对 lastname.firstname.project 怎么看???像 luz.marlon.project ?

于 2008-11-18T13:20:37.880 回答
0

我想过问同样的问题。到目前为止,我使用了前缀 com.tehvan,尽管我实际上并没有公司。

于 2009-02-19T07:20:25.823 回答