Каков хороший стиль кода для 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)
  

Я хотел бы знать, какой из них лучше или между этими двумя стилями, они одинаковы, и мы можем выбрать все, что нам нравится.

Ответ №1:

Я предпочитаю стиль 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)
   ...
}
  

Преимущество этого заключается в том, что вы видите, что вы используете в описании класса. Если список становится слишком длинным, это также указывает на то, что вы можете подумать о разделении проблем.

Об этом также есть обсуждение на Reddit

Ответ №2:

Лучшая идея — использовать вариант 2, где это возможно. Также изменили ваше имя значения (поскольку я лично считаю, что оно более читабельно).

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

По возможности избегайте неоднозначного импорта. Это может затруднить отладку вашего кода, увеличивает вероятность случайного импорта двух Load объектов (если вы где-то выполняете другой неоднозначный импорт) и означает, что вы импортируете много ненужного материала, что может привести к раздуванию.

Если вам нужно импортировать несколько объектов, тогда придерживайтесь фигурной скобки import com.org.package.{Load, Write} .

Я бы (лично) также изменил имя значения. Большинство из нас читают слева направо, поэтому знайте, что сначала вы знаете, что это фрейм данных, а затем его значение.

Это небольшое изменение, но может помочь ускорить отладку. Особенно, если у вас есть rddPAndR позже (например).

Ответ №3:

Это действительно зависит от вашего стиля, но для меня было бы здорово, если бы вы могли свести к минимуму использование «_».

И я бы использовал так:

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

Отредактировано

Комментарии:

1. Я думаю, у вас есть тип — не должно быть import com.socgen.bsc.sqd.per.loadPandR ?

2. Да, что ты сказал @pme