Ответ 1
В этом разделе главу Scala Руководство по стилю. Это довольно ясно само по себе, но я просто оставлю некоторые цитаты здесь.
Основная идея:
Как правило, файлы должны содержать единый блок логической компиляции. Под "логическим" я подразумеваю класс, признак или объект.
Существует, конечно, исключение для сопутствующих объектов:
Единственное исключение из этого руководства - это классы или черты, у которых есть сопутствующие объекты. Объекты Companion должны быть сгруппированы с соответствующим классом или признаком в том же файле.
Также существует тот факт, что sealed
работает только в одном файле.
Несмотря на сказанное выше, существуют некоторые важные ситуации, которые гарантируют включение нескольких единиц компиляции в один файл. Одним из распространенных примеров является запечатанный признак и несколько подклассов. Из-за характера запечатанных суперклассов (и признаков) все подтипы должны быть включены в один и тот же файл.
В большинстве случаев классы case являются просто контейнерами данных и могут быть сгруппированы вместе.
Другим случаем является то, что несколько классов логически образуют единую сплоченную группу, обмениваясь концепциями до такой степени, что обслуживание в значительной степени поддерживается путем их содержания в одном файле.
Наконец, существует соглашение об именах для исключенных многоуровневых файлов Scala:
Все файлы с несколькими блоками должны иметь имена camelCase с первой буквой в нижнем регистре.
Итак: поместите ваши классы и объекты Scala в отдельные файлы, если они не попадают в одно из трех упомянутых исключений.