在Java / Scala中组织导入的首选样式

时间:2013-08-26 09:29:52

标签: scala

我想知道在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人的意见。

马丁会怎么说?

(从而将这个问题置于纯粹意见的范围之外。这个问题的答案是可以证实的。正如Martin所说,社区也是如此。)

保罗会如何回应?

已知@extempore已经对Scala代码库进行了大量提交,只是为了在scala之前添加util,因为在存在名为{的空目录时出现某种类型的包加载错误行为{1}}。

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

奖金问题:如果有的话,一个人放在util的哪个位置?

2 个答案:

答案 0 :(得分:5)

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

在Eclipse中:来源>组织进口

在NetBeans中:来源>组织进口 您还可以使用Refactor>重新组织整个项目。检查和改造。

在IntelliJ中,我认为它是:代码>优化进口。

答案 1 :(得分: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的进口往往放在最底层,好像它们仅仅是簿记一样。

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

更新:有时我利用本地导入。最近我snuck a language feature import in就像我过去所做的那样,因为我的感觉是影响(对读者的敏感性)实际上是本地的。