Flash ActionScript 3包结构和目录结构

Flash ActionScript 3包结构和目录结构,flash,actionscript-3,flash-builder,Flash,Actionscript 3,Flash Builder,当我在目录结构的错误级别导入第三方库时,我似乎在Flash Builder中遇到编译问题 例如,有时我会将一个库导入到其目录树中太深的一个级别,而包资源管理器最终会排除前缀根级别的包,通常是“com.”或“net.”。即使源代码本身的内容没有改变,这也会导致编译错误 因此: 类的包结构(如“foo.bar.class”)必须与其路径位置(如foo/bar/class.as)匹配,这是1)约定还是2)语言要求 如果是语言要求,为什么是要求?由于包的结构已经在源代码中指定了,并且很高兴地使用了每行

当我在目录结构的错误级别导入第三方库时,我似乎在Flash Builder中遇到编译问题

例如,有时我会将一个库导入到其目录树中太深的一个级别,而包资源管理器最终会排除前缀根级别的包,通常是“com.”或“net.”。即使源代码本身的内容没有改变,这也会导致编译错误

因此:

  • 类的包结构(如“foo.bar.class”)必须与其路径位置(如foo/bar/class.as)匹配,这是1)约定还是2)语言要求

  • 如果是语言要求,为什么是要求?由于包的结构已经在源代码中指定了,并且很高兴地使用了每行的前三到八列,所以这不是过分确定了包的结构吗

  • 如果这不是语言要求,我的编译错误是否只是Flash Builder强制执行约定的结果


    • 这是一种语言要求,也是ActionScript与Java共享的要求。提供了一个合适的描述:

      Java语言 规范建立了软件包 命名约定以避免 两个已发布包的可能性 同名的有相同名字的。命名 约定描述了如何创建 唯一的包名称,以便 广泛分布的信息将具有 唯一名称空间。这允许 包装应单独、方便、可靠 自动安装和 编目


      我要补充的是,通过将类文件保存在相应的文件夹结构中,可以通过导入现有文件夹结构来合并完整或部分项目(如框架和/或组件),而不会有命名冲突和/或覆盖现有文件的风险。当您使用大型代码库时,它还可以帮助您找到特定的类。

      听起来您应该回去学习一些有关AS3和OOP的基础知识。对此有一个很好的了解——毫无疑问,我对AS3是相当陌生的,但我不确定在源代码和文件结构中双重指定包(或其特定于语言的等价物)是否是OOP的基本要求。我认为这种习惯的价值在于它是一种实用的惯例,但我想我不得不承认,对于这是一种编译器要求的想法,我感到有点审美上的不适。有一些语言可以在没有太多冗余的情况下自行组织。我肯定看到有这样的约定的逻辑,但我很好奇:当JLS提到命名约定时,它是否也意味着编译器的要求,还是字面意义上的“约定”,即。,标准实践,但不是严格的规则?我可以看出这有多么误导,但引语有点断章取义:这篇文章有点长,它主要关注如何命名您的包(如“我应该选择哪些名称?”)。“公约”一词是指这一点。保持一致的文件层次结构是一项要求。偏差将导致编译失败。