Scala:我应该在哪里放置import语句?

Vil*_*tas 19 import scala

Scala允许随时随地导入任何你想要的东西,这很棒.但是,在类,方法或任何块中导入内容时,我是否应该考虑任何因素?它与性能,样式,代码的可维护性等有何关系?

一般来说,我试图遵守这些规则(由我自己组成):

  • 如果我从其他包中导入外部的东西,我总是将它放在"包"之后的顶部.
  • 如果我在同一个文件中多次使用某些内容,我也会在顶部导入它.
  • 否则,我将导入放在相关类/特征/对象的顶部.
  • 我避免在方法和块中导入东西.
  • 我尽量避免导入实例对象的内容,除非我有充分的理由这样做.
  • 我会避免重命名和"隐藏",除非解决名称冲突,但我从来没有需要它.

这些"规则"对你有意义吗?我限制自己太多了吗?

oxb*_*kes 12

通常有必要将某些东西(例如变量或方法)的范围限制为"最小".例如,使用内部def而不是类级别的内部def.为什么导入语句应该有所不同?为什么要使用仅在单个块中使用的导入来污染类?

我想声明导入尽可能接近它们的使用位置!

这样做的结果是常见的实用程序,包括scalaz和我自己的库,往往会在顶层导入一次(因为它们在整个类中使用).而像I/O这样的东西会在本地导入,而只在它被使用的地方导入

  • "为什么进口报表应该有所不同?" - 因为拥有局部变量的原因是_reasonability_,这意味着你可以推断出代码的行为.然而,导入不包含任何逻辑,并且将它们推到第一行是有意义的,以便提高代码的可读性和简洁性. (2认同)