当从对象调用方法时,我不知道如何在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)
我想知道哪一种更好,或者在这两种样式之间,它们是相同的,我们可以选择自己喜欢的任何东西。
答案 0 :(得分:1)
我更喜欢 style 2 ,尤其是在对象名称如此短的情况下。如果您的名字较长,也可以添加一个替代名称,例如:$
import com.socgen.bsc.sqd.per.{LongComplexLoad => LCL}
val pAndRDf: DataFrame = LCL.loadPandR(sqdDate)
如果我能控制一切,我通常会采用另一种风格。那就是使用trait
而不是object
。
class MyClass extends Load {
val pAndRDf: DataFrame = loadPandR(sqdDate)
...
}
这样做的好处是,您可以在类说明中看到使用的内容。如果列表过长,则表明您可能会考虑关注点分离。
上也对此进行了讨论答案 1 :(得分:0)
这实际上取决于您的样式,但是,对我来说,如果您能尽量减少使用“ _”,那就太好了。
我会这样使用:
import com.socgen.bsc.sqd.per.Load.loadPandR
val pAndRDf: DataFrame = loadPandR(sqdDate)
已编辑
答案 2 :(得分:0)
最好的方法是尽可能选择选项2。也修改了您的值名称(因为我个人认为更易读)。
import com.socgen.bsc.sqd.per.Load
val dfPAndR: DataFrame = Load.loadPandR(sqdDate)
在可能的情况下避免模棱两可的进口。这可能会使调试代码变得更加困难,增加了意外导入两个Load
对象的机会(如果您在某处进行了另一个含糊的导入),并且意味着您要导入很多不需要的东西,可能会导致肿胀。
如果您需要导入多个内容,请坚持使用大括号import com.org.package.{Load, Write}
。
我(个人)也要更改值名称。我们大多数人从左到右阅读,因此知道您首先知道它是一个数据框,然后知道它的值。
这是一个很小的变化,但可以帮助加快调试速度。尤其是如果以后有rddPAndR
(例如)。