Должен ли я использовать свойства интерфейса в Kotlin? - PullRequest
0 голосов
/ 12 марта 2019

Я изучаю Kotlin и пришел из мира Java. Мне кажется, что идея свойств в интерфейсах довольно своеобразна.

  • Каково общее мнение о свойствах в интерфейсах?
  • Считается ли это хорошей практикой иметь их?

Я видел несколько дискуссий по смежной теме, но на C #, но ни одного на Kotlin.

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Свойства в Kotlin являются сокращением к соглашению об именах Java Beans, свойство только для чтения - то же самое, что и метод получения, а записываемое свойство - пара методов получения и установки.Вы также можете использовать свойства для получения и настройки Java на Kotlin.То же относится и к классам, и к интерфейсам.

Свойства имеют сокращенный синтаксис и улучшают читабельность

Делегированные свойства в Kotlin помогают создавать короткий и мощный код, например, val lazyCompoutedVariable by lazy { computeIt() }

Свойства, вероятно, будут дешевыми для вызова, используется тот же стиль кода, например, в C #

Более подробную информацию об этом можно найти в документации https://kotlinlang.org/docs/reference/properties.html

1 голос
/ 13 марта 2019

Они используются в стандартной библиотеке, например, CharSequence#length, Collection#size - только первые, о которых я подумал.Если альтернатива заставляет их быть getLength() / getSize(), это, очевидно, плохо.

Вы удаляете String#length?Реализуете ли вы length для каждой реализации CharSequence отдельно?Вы делаете length расширением

val CharSequence.length get() = this.getLength()

?Только последний кажется отдаленно приемлемым.

Или вы можете просто иметь val length в CharSequence и никаких проблем:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...