我想知道在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
的哪个位置?
答案 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就像我过去所做的那样,因为我的感觉是影响(对读者的敏感性)实际上是本地的。