3

我想知道在 Java/Scala 源代码中组织导入的首选/最常见样式。我遵循首先放置 java/scala 导入的风格,然后是 org. 网。等然后com。

import java.util....
import scala.collection...

import org.apache...
import net.liftweb.json

import com.mycompany...

最近我的一位队友提出了这种方法

- external libraries

- internal libraries

- scala
- java

import net.liftweb.json._

import com.mycompany.logging.Logger
import com.mycompany.api.Statsd
...

import scala.util.{ Try, Success, Failure }
import scala.concurrent.{ ExecutionContext, Future, Await }
import java.util.Date

想知道SO人的意见。

马丁会说什么?

(从而将这个问题定位在纯粹的意见范围之外。这个问题的答案是可以验证的。正如马丁所说,社区也是如此。)

保罗会如何回应?

众所周知,@extempore 已经对 Scala 代码库进行了广泛的提交,只是为了添加scala到前面,util因为在存在名为util.

显然,这不是一个“软”问题。

额外的问题:如果有的话,一个人把一个人放在哪里_root_

4

2 回答 2

5

让您的 IDE 完成这项工作,它知道如何做好。Eclipse、NetBeans 和 IntelliJ 具有自动组织导入的工具。

在 Eclipse 中:源 > 组织导入

在 NetBeans 中:Source > Organize Imports 您还可以使用 Refactor > Inspect and transform 为整个项目重新组织它。

在 IntelliJ 中,我认为是:代码 > 优化导入。

于 2013-08-26T09:38:36.817 回答
2

如果您只使用绝对路径而不使用通配符导入,那么我同意将第三方库放在首位是很好的,因为它们会提前为读者宣布依赖关系。

但是,我养成了放的习惯

import util._  // Try, etc

很早,因此它不会被包含大量实用程序包的后续导入取消。

尽早查看其他基础知识也很有帮助:

import collection.mutable  // warning: yes you will find mutable in here

我也开始欣赏领导

import language.higherKinds  // if you aren't L3 maybe you shouldn't touch my code

开个玩笑,但 SIP-18 进口经常被放在最底层,就好像它们只是记账一样。

假设模块化和低扇出,第三方包的列表无论如何都应该很小,并且可以接近第一个顶级定义。

更新:有时我会利用本地进口。最近我以这种方式偷偷引入了一个语言特征导入,就像我过去所做的那样,因为我的感觉是(对读者感受的)效果实际上是局部的。

于 2013-08-26T10:47:12.370 回答