#android-studio #kotlin #intellij-idea
#android-studio #kotlin #intellij-идея
Вопрос:
Я изучаю Kotlin в Android, но многие коды являются ненужными, потому что у меня проблема с распознаванием, когда какой-либо код является функцией вызова или экземпляром класса.
Код не работает, но, например, хорош:
class Boo{
val callFromFoo: Int = Foo(1)
val instanceFoo: Foo = Foo(2)
fun Foo(id: Int): Int {
return id
}
}
class Foo(val id: Int)
Я обеспокоен, потому что вызов Foo(1) и создание экземпляра Foo (2) — это один и тот же код, без распознавания IDE различий.
Примечание: явное объявление не является стандартным в Kotlin.
Ответ №1:
Если у вас есть классы в одном файле / пакете, вы могли бы использовать отражение следующим образом:
class Boo {
val callFromFoo: Int = Foo(1)
val instanceFoo: Foo = requireNotNull(Foo::class.primaryConstructor).call(2)
fun Foo(id: Int): Int {
return id
}
}
class Foo(val id: Int)
Если у вас есть классы в разных пакетах, вы могли бы создать экземпляр объекта, указывающего этот пакет. Вот так:
class Boo {
val callFromFoo: Int = Foo(1)
val instanceFoo: Foo = com.android.example.package2.Foo(2)
fun Foo(id: Int): Int {
return id
}
}
Я бы не рекомендовал ни одно из этих решений.
Обратите внимание, что классы, как правило, являются существительными, такими как Navigator
, LoginUseCase
, User
, Logger
navigateTo()
и т.д., А функции, как правило, являются глаголами или, по крайней мере, используют глаголы, такие как login()
, processData()
, log()
,, и т.д. Я не думаю, что у них когда-либо должно быть одно и то же имя.
Кроме того, я думаю, что стиль кодирования, который вы используете, не очень хорошо сочетается с Kotlin. Это создаст ненужную путаницу между функциями и классами, даже если они имеют разные имена. Я предлагаю вам следовать официальному руководству по стилю кодирования Kotlin. Имена функций должны начинаться со строчной буквы, а имена классов — с заглавной, чтобы избежать путаницы.
Обновить
Если вы хотите придерживаться своего соглашения о кодировании и различать вызов конструктора и вызов функции, вы можете выбрать разные цвета для каждого в Android Studio или IntelliJ.
Android Studio / IntelliJ:
Файл> Настройки > Редактор> Цветовая схема > Kotlin
Комментарии:
1. Спасибо Шарма, я программист на C #, где есть другой стиль кодирования. Kotlin не для меня естественен, поэтому я ищу другой способ лучшей акклиматизации через IDE
2. @Abedron Я обновил ответ, включив в него решение с использованием IDE. Я также программист на C #. Я только что писал Kotlin в течение нескольких месяцев. На мой взгляд, легче привыкнуть к написанию имен функций в нижнем регистре, чем привыкнуть к любому IDE-решению.
3. Спасибо, это намного лучше;)