为什么Java源代码中有这么多文件夹?

Roo*_*kie 21 java

每当我查看一些Java源代码时,我发现自己在一个文件夹中浏览,该文件夹中包含文件夹,其中包含文件夹等.为什么Java需要这么多嵌套文件夹,除了新的子文件夹之外没有其他内容?

例如:https: //github.com/halfninja/android-dragcontrol3d/tree/master/src/uk/co/halfninja/android 这可能不是最糟糕的例子,但有两个文件夹"uk"和"co"只是没有意义.我只在Java源代码中看到这个!

例如minicraft:http://www.ludumdare.com/compo/ludum-dare-22/?action = preview&uid = 398

import com.mojang.ld22.gfx.Font;
import com.mojang.ld22.gfx.Screen;
import com.mojang.ld22.gfx.SpriteSheet;
Run Code Online (Sandbox Code Playgroud)

为什么不写:

import gfx.Font;
import gfx.Screen;
import gfx.SpriteSheet;
Run Code Online (Sandbox Code Playgroud)

那太干净了.

(我从未在Java中编程.)

AHu*_*ist 8

这些是为了防止与其他罐子的冲突.在包名中使用类似公司URL的内容使其可能足够独特,不会与其他人的包和类冲突.

你的例子很好,因为想象两个人想要使用"gfx"作为包名并使用Font或Sprite这样的类似乎是合理的.现在,如果你想同时使用它们,那么你怎么能包名和类名呢?

  • 不会只有一个子文件夹修复这个问题?例如`minicraft.gfx.Font`?对我来说最有意义. (6认同)
  • 我在想,为什么不直接使用一个文件夹?`com_mojang_ld22.gfx.Font`这会导致任何问题吗?至少不会有这么多子文件夹. (6认同)
  • Python有一个不同的解决方案; 您可以为导入的包创建别名."将packageA导入packageB"或"从foo导入classA作为classB".如果名称冲突,请重命名其中一个.我想我更喜欢Java的方法. (2认同)
  • *faceplam 好吧,Java 开发人员,让我们考虑一下这个问题。如果它位于共享目录结构中,您将如何欺骗它?这是一个节点结构,文件和文件夹都不会让你将它们命名为相同的!@#$ing!你知道为同一个该死的网页找到 CSS 却被分成小块,向 30 个不同的方向分支,每个方向有十两个目录深,这有多麻烦吗?当你达到第 9 层(更不用说第 20 层)时,有人想要完全相同的 NS 的可能性有多大? (2认同)
  • @AHungerArtist 我不需要访问保护。我需要得到保护,以免 Java FUD 将我曾经经历过的每一次 Java 体验都变成一种巨大的痛苦。这是一种毫无意义、不必要的约定,会导致目录膨胀。 (2认同)
  • NPM 使用了我认为非常合乎逻辑的包约定。它们的包可以使用本身唯一的名称(例如“react”、“fs”、“express”等),但它们也可以按用户名确定范围(例如“@username/package”)。这可以防止冲突,同时使事情尽可能简单,并且它只使用单个目录来存储所有内容。 (2认同)