【问题标题】:ActionScript 3 package structure and directory structureActionScript 3 包结构和目录结构
【发布时间】:2011-01-23 19:24:15
【问题描述】:

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

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

因此:

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

  • 如果是语言要求,为什么是要求?这不会过度确定包结构吗,因为它已经在源代码中指定并且非常高兴地消耗了每行的前三到八列?

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

【问题讨论】:

  • 听起来你应该回去学习一些关于 AS3 和 OOP 的基础知识。好好阅读这篇文章 - adobe.com/devnet/actionscript/articles/oop_as3.html
  • 毫无疑问,我对 AS3 还是很陌生,但我不确定在源代码和源代码中双重指定包(或其特定语言的等价物)是否是整个 OOP 的要求文件结构。我认为这种习惯的价值是一种实用的惯例,但我想我不得不承认,对于这是编译器要求的想法,我感到有点审美不适。有些语言可以在没有太多冗余的情况下自行组织。

标签: flash actionscript-3 flash-builder


【解决方案1】:

这是一种语言要求,也是 ActionScript 与 Java 共有的要求。 Wikipedia article on Java packages 提供了一个合适的描述:

Java 语言 规范建立包 命名约定,以避免 两个发布包的可能性 具有相同的名称。命名 约定描述如何创建 唯一的包名,使包 分布广泛的将有 独特的命名空间。这允许 包装分开,容易和 自动安装和 编目。

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

【讨论】:

  • 我确实看到了有这样的约定的逻辑,但我很好奇:当 JLS 提到命名约定时,它是否也暗示编译器要求,或者它是否意味着“约定”字面意思,即标准做法,但不是严格的规则?
  • 我知道这是有误导性的,但引用的内容有点断章取义:这篇文章有点长,主要关注如何命名你的包(如“哪些名称应该我挑?”)。术语“约定”就是指这一点。保持一致的文件层次结构是要求。偏差会导致编译失败。
猜你喜欢
  • 2011-02-17
  • 1970-01-01
  • 2013-07-11
  • 2021-01-21
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多