问题标签 [packages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
27 回答
468406 浏览

java - 您可以使用反射找到包中的所有类吗?

是否可以找到给定包中的所有类或接口?(快速查看 eg Package,似乎没有。)

0 投票
3 回答
785 浏览

delphi - Delphi 2009 软件包的 LIB 文件输出位置

在构建 Delphi 2009 组件包时,如何指定哪个目录应包含 C++ Builder 用户所需的生成的 .hpp 和 .lib 文件?

0 投票
15 回答
30030 浏览

java - 您在 Java 项目中使用什么策略来命名包,为什么?

不久前我就想到了这个问题,最近它又出现了,因为我的商店正在开发它的第一个真正的 Java Web 应用程序。

作为介绍,我看到了两种主要的包命名策略。(需要明确的是,我不是指整个 'domain.company.project' 部分,我指的是下面的包约定。)无论如何,我看到的包命名约定如下:

  1. 功能性:根据架构上的功能而不是根据业务领域的身份来命名您的包。 另一个术语可能是根据“层”命名。因此,您将拥有一个 *.ui 包、一个 *.domain 包和一个 *.orm 包。您的包裹是水平切片而不是垂直切片。

    逻辑命名更常见。事实上,我相信我从未见过或听说过这样做的项目。这当然让我怀疑(有点像认为你已经想出了一个解决 NP 问题的方法),因为我不是很聪明,而且我认为每个人都必须有充分的理由这样做。另一方面,我并不反对人们只是想念房间里的大象,而且我从未听说过以这种方式命名包的实际论据。这似乎是事实上的标准。

  2. 逻辑:根据业务域标识命名您的包,并将与该垂直功能切片有关的每个类放入该包中。

    正如我之前提到的,我从未见过或听说过这一点,但这对我来说很有意义。

    1. 我倾向于垂直而不是水平地接近系统。我想进去开发订单处理系统,而不是数据访问层。显然,我很有可能会在该系统的开发中触及数据访问层,但关键是我不这么认为。当然,这意味着当我收到变更单或想要实现一些新功能时,不必为了找到所有相关的类而在一堆包中四处寻找会很好。相反,我只是查看 X 包,因为我所做的与 X 有关。

    2. 从开发的角度来看,我认为让你的包记录你的业务领域而不是你的架构是一个重大的胜利。我觉得域几乎总是系统中更难理解的部分,因为系统的架构,特别是在这一点上,在其实现中几乎变得平凡。事实上,我可以使用这种类型的命名约定并立即从包的命名中知道它处理订单、客户、企业、产品等的系统,这似乎非常方便。

    3. 看起来这样可以让您更好地利用 Java 的访问修饰符。这使您可以更清晰地将接口定义到子系统中,而不是系统的层中。因此,如果您有一个希望透明持久化的订单子系统,理论上您可以通过不必在 dao 层中为其持久性类创建公共接口,而是将 dao 类包装在只有它处理的类。显然,如果您想公开此功能,您可以为其提供一个接口或将其公开。通过将系统功能的垂直部分拆分到多个包中,您似乎失去了很多。

    4. 我想我可以看到的一个缺点是它确实使剥离图层变得更加困难。而不是仅仅删除或重命名一个包,然后用另一种技术将一个新的包放到适当的位置,您必须进入并更改所有包中的所有类。但是,我认为这没什么大不了的。这可能是由于缺乏经验,但我不得不想象,与您在系统中进入和编辑垂直特征切片的次数相比,您更换技术的次数相形见绌。

所以我想这个问题会问你,你如何命名你的包,为什么?请理解,我不一定认为我在这里偶然发现了金鹅或其他东西。我对这一切都很陌生,主要是学术经验。但是,我无法发现我的推理中的漏洞,所以我希望你们都可以,这样我就可以继续前进。

0 投票
2 回答
3698 浏览

java - 控制对“.internal”包的访问的最佳实践

我编写 Eclipse 插件并将一些类导出为 API,同时希望限制对其他类的访问。

我遵循将这些类分成“.internal”子包的常见 Eclipse 做法。

但是,我不能在这些类上使用“包”或默认级别访问,因为其中许多需要由我正在导出的类使用。

防止或阻止我的 API 用户将这些类用于他们自己的目的的最佳做法是什么?有自动检查器吗?

我承认当我别无选择时,我曾涉足使用 Eclipse 的一些内部类 :)

澄清:我对非插件代码有类似的需求。

0 投票
3 回答
943 浏览

python - 获取当前包中所有模块的列表

这就是我想要做的:我想构建一个测试套件,它被组织成包,如 tests.ui、tests.text、tests.fileio 等。在这些包中的每个__init __.py 中,我想制作一个测试套件,包括该包中所有模块中的所有测试。当然,可以使用 unittest.TestLoader 完成所有测试,但似乎我必须单独添加每个模块。所以假设 test.ui 有编辑_窗口_test.py 和预览_窗口_test.py,我希望__init __.py 导入这两个文件并获取两个模块对象的列表。这个想法是我想自动化测试套件的制作,这样我就不会忘记在测试套件中包含一些东西。

最好的方法是什么?看起来这将是一件容易的事情,但我没有找到任何东西。

我正在使用 Python 2.5 顺便说一句。

0 投票
3 回答
2243 浏览

perl - 如何找出 Perl 包的文件名?

我想将 Perl 包名称转换为文件的完整路径。

我知道有一个 CPAN 模块可以做到这一点?就是找不到了?

0 投票
2 回答
200 浏览

c# - 打包vs2005项目

以下是我创建发送给最终用户的包的步骤:

  1. 使用 Visual Studio 2005 在调试和发布模式下构建项目(这是用 C# 编写的库 DLL)。
  2. 我运行 doxygen 并创建文档
  3. 我创建了一个文件夹结构,我在其中放置了我的 dll 文档和一些发行说明
  4. 压缩它
  5. 装运它

目录树结构如下所示:

我正在考虑推出一个脚本来自动化它。但在此之前,我想了解一下打包库api类型项目的常见做法,特别是结构和使用的工具。高度赞赏参考和示例

谢谢

0 投票
7 回答
159432 浏览

python - 如何导入在 __init__.py 中定义的类

我正在尝试组织一些模块供我自己使用。我有这样的事情:

lib/__init__.py中,我想定义一些在导入 lib 时要使用的类。但是,如果不将类分成文件并将它们导入__init__.py.

而不是说:

我想要这样的东西:

有可能,还是我必须将类分成另一个文件?

编辑

好的,如果我从另一个脚本导入 lib,我可以访问 Helper 类。如何从 settings.py 访问 Helper 类?

此处的示例描述了包内引用。我引用“子模块经常需要相互引用”。就我而言,lib.settings.py 需要 Helper,而 lib.foo.someobject 需要访问 Helper,那么我应该在哪里定义 Helper 类?

0 投票
3 回答
3435 浏览

delphi - 将表单和框架添加到包中

我正在开发一个 IDE 注册组件包,其中大部分是从 TFrame 基类派生的。包中还包含由这些组件调用的各种自定义对话框表单。我在德尔福 2007 年工作。

我注意到有时通常具有关联 DFM 文件的框架和表单单元并不总是在它们下方显示 DFM 文件“下方”(可通过​​小 [+] 树视图节点扩展器访问)。如果我添加一个现有的基于表单的 PAS 文件,例如,通过右键单击 BPL 项目(在项目管理器中)-> 添加,它不会在列表中显示 DFM 文件。

但是,如果我添加新的并在项目中创建一个新的窗体或框架单元,它会在项目管理器中显示为典型的嵌套两个文件项。如果我将现有表单从项目组中的另一个项目拖到有问题的这个 BPL 项目中,它也会显示这种方式。

似乎这应该是一致的,我更喜欢两个文件显示单位是框架还是表单。

这是否表明项目文件中有问题?我是否错误地将现有表单/框架添加到此包中?如果是这样,我应该如何添加现有的表单/框架单元,以便两个文件都显示在项目管理器列表中?

* 更新 *

来自艾伦的以下建议:

我尝试将 {$R *.dfm} 指令添加到表单的单元中,并且在将 DFM 文件添加到我的 BPL 包/项目时它不会强制显示它。将 {$R *.dfm} 添加到项目文件本身(我认为这不是您的意思,但我想我会尝试)也不起作用。这种技术是否只适用于 EXE 项目?

可能(可能)相关,尝试在某些地方使用该指令进行构建给了我这个:

[DCC 错误] E2161 警告:重复资源:类型 10 (RCDATA),ID TTESTTREEVIEW;文件 E:\Projects\MyApp\Components\TTestTreeViewFrame.dfm 资源保留;文件 E:\Projects\MyApp\Components\TTestTreeViewFrame.dfm 资源被丢弃。

“保留”和“丢弃”同一个文件??


后来:看起来这个“重复资源”问题可能与 有关。不确定,但至少在一种情况下,两者同时发生。

0 投票
4 回答
2586 浏览

java - 打包 Java 控制台应用程序的最快方法

我在自定义包层次结构中构建了一组非常小的类,其中一个控制台应用程序类使用它们。在 JCreator 和命令提示符下一切正常。

我想构建第二个控制台应用程序来重复使用相同的包。

作为一个 Java 新手,最快、最肮脏的方法是什么?

我主要关心的是避免将包目录复制到新控制台应用程序的目录中。

使用JCreator,我将包目录添加到项目中并编译运行没有任何问题。但是当我尝试从命令行运行控制台应用程序时,它在包层次结构中找不到类。

在 Visual Studio 中,您只需添加一个引用...