调用对象的方法时,scala的好代码样式是什么

调用对象的方法时,scala的好代码样式是什么,scala,Scala,当从对象调用方法时,我不知道如何在scala项目的两种代码样式之间进行选择 代码样式1 import com.socgen.bsc.sqd.per.Load._ val pAndRDf: DataFrame = loadPandR(sqdDate) 代码样式2 import com.socgen.bsc.sqd.per.Load val pAndRDf: DataFrame = Load.loadPandR(sqdDate) 我想知道哪一种更好,或者在这两种样式之间,它们是相同的,我们可以

当从对象调用方法时,我不知道如何在scala项目的两种代码样式之间进行选择

代码样式1

import com.socgen.bsc.sqd.per.Load._ 
val pAndRDf: DataFrame = loadPandR(sqdDate)
代码样式2

import com.socgen.bsc.sqd.per.Load
val pAndRDf: DataFrame = Load.loadPandR(sqdDate)

我想知道哪一种更好,或者在这两种样式之间,它们是相同的,我们可以选择我们喜欢的任何样式。

这真的取决于您的样式,但是,对我来说,如果您能尽量减少使用“u”,那就太好了

我会这样使用:

import com.socgen.bsc.sqd.per.Load.loadPandR
val pAndRDf: DataFrame = loadPandR(sqdDate)
编辑的

我更喜欢样式2,尤其是如果对象的名称很短的话。如果名称较长,还可以添加替换,如:$

import com.socgen.bsc.sqd.per.{LongComplexLoad => LCL}
val pAndRDf: DataFrame = LCL.loadPandR(sqdDate)
如果我能控制局面,我通常会采用另一种风格。即使用
trait
s而不是
object
s

class MyClass extends Load {

   val pAndRDf: DataFrame = loadPandR(sqdDate)
   ...
}
这样做的好处是您可以在类描述中看到所使用的内容。如果列表太长,这也表明您可能会考虑分离关注点


上也有关于这一点的讨论,最好的办法是尽可能使用选项2。也修改了您的值名称(因为我个人认为它更可读)

尽可能避免模棱两可的导入。这会使调试代码变得更加困难,增加意外导入两个
Load
对象的可能性(如果您在某处执行另一个模棱两可的导入),并意味着您正在导入大量不需要的内容,可能会导致膨胀

如果需要导入多个内容,请坚持使用大括号
import com.org.package.{Load,Write}

我(个人)也会更改值名。我们大多数人从左到右阅读,所以首先知道它是一个数据帧,然后知道它是什么值


这是一个小改动,但可以帮助加快调试速度。特别是如果你以后有一个
rddPAndR
(例如)。

我认为你有一个类型-不应该是
import com.socgen.bsc.sqd.per.loadPandR
?是的,你说的是@pme
import com.socgen.bsc.sqd.per.Load
val dfPAndR: DataFrame = Load.loadPandR(sqdDate)