Предположим, что я есть в Scalaименовании Scala для черт
trait Connection {
def init(name: String)
def dispose
}
в trait
И я хочу, чтобы создать класс, который реализует его. Но я хочу, чтобы назвать это как Connection
также:
class Connection extends Connection {
// ....
}
Это не будет работать. Конечно, я мог бы назвать trait
что-то по-другому, но оказалось, что соглашение об именах в Scala говорит, что я должен назвать черту как обычные классы, то есть без префикса, который я бы использовал в C# (IConnection
, где IConnection
был бы interface
) ,
И в этом конкретном случае больше подходит название Connection
для class
и trait
.
Или я пропустил что-то в соглашении об именах Scala?
Я думаю, что вариант 1 является наиболее распространенным на практике. Вариант 2 запутан, когда вы читаете код. – monkjack
@monkjack Правильно; Может показаться, что повторяется одна и та же информация, но, с другой стороны, вы не можете ожидать, что у всех разработчиков будет весь контекст пакета всех типов в их голове. – AlexG