- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Java 9 之前,我认为包是促进/强制代码模块化和解决命名空间问题的一种方式。包实际上在解决后者方面做得非常糟糕(com.popkernel.myproject.Employee myEmployee = new com.popkernel.myproject.Employee();
,呃),所以我主要关注前一个好处.
虽然包在强制模块化方面做得很差,但我发现它们在促进模块化方面非常有效。 “这个类属于哪个包?”一直是一个很有启发性的问题,我很感激 Java 迫使我问自己这个问题。
但是现在 Java 9 模块出现了,它们比包更好地解决了模块化问题。事实上,您可以完全由模块组成一个新项目,其中每个模块包装一个包。
当然,与包相比,模块是很多额外的样板,更不用说与包不同的怪癖,仅通过检查类的 .java 文件是不可能判断类属于哪个模块的。
因此,我接下来一起使用包和模块的计划是:在编写代码时,将相关概念分组到包中。然后,如果我决定要分发我正在处理的代码,请将其形式化为模块。
这是同时利用这些概念的明智方法吗?
最佳答案
Is that a sane way to utilize those concepts in tandem?
是的,有点。尽管您还可以通过模块化代码获得其他好处,例如可靠配置、强大封装、提高可读性等。
So going forward my plan for using packages and modules together is: as I'm writing code, group related concepts into packages. Then, if I decide I want to distribute the code I'm working on, formalize it into a module.
您可以问自己的一个简单问题是,当您使用模块时,并且将相关概念分组到包中,最终如何对相关包进行分组?
最能符合这个原因的答案是引入了一种新的Java程序组件 - Modules
A module is a named, self-describing collection of code and data. Its code is organized as a set of packages containing types, i.e., Java classes and interfaces; its data includes resources and other kinds of static information.
到目前为止,此类集合主要以 JAR 文件为目标,这些文件被分发为其他文件中的依赖项/库,但它们正在成为遗留格式,并且与模块有很大不同。在我最近对 Java 9 - What is the difference between "Modules" and "JAR" files? 的回答之一中我已尝试详细说明差异。
关于java - 健全性检查 : how are packages and modules are meant to be used together?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46556189/
我正在尝试用 Rust 中的父指针制作一棵树。节点结构上的一种方法给我带来了终身问题。这是一个最小的例子,明确地写了生命周期,以便我可以理解它们: use core::mem::transmute;
我是一名优秀的程序员,十分优秀!