Intereting Posts
Перегрузка сеттера в Котлине Создание класса Parcelable со вторичным конструктором, который принимает список как параметр в Kotlin Ошибка при обработке аннотаций с помощью Kapt и Dagger2 Kotlin: видимый делегат свойства nullable Компоненты архитектуры Android Room ViewModel CompleteableFormAction «Недостаточно информации для вывода параметра T» с помощью Kotlin и Android NoSuchMethodError: java.lang.Long.hashCode Есть ли способ создать ненулевой массив из диапазона? Любое улучшение кода при добавлении / замене фрагмента Intellij IDEA не добавляет зависимости maven к пути класса kotlin script classpath Kotlin / Android – KotlinReflectionInternalError в классе данных с лямбдой Android Studio и Kotlin – не загружать изменения Kotlin + SpringBoot 2.0.0-M4 не удалось использовать контекст приложения загрузки (BeanCreationException) Тестирование методов @ -синхронного возвращения в Spring @Async Kotlin: Может ли абстрактный суперкласс иметь абстрактный конструктор?

Использование префикса «m» для переменных в Котлине

Ну, используя префикс «m» для имен переменных, стал обычным в программировании, в основном в Android, но с тех пор, как прибыл Котлин, эта мелочь меня немного беспокоит. Внутри родительского класса нет ничего нового, но настройка и получение переменных из другого класса кажется не очень удобной, потому что в Java мы создаем (и называем) наши сеттеры и геттеры, поэтому мы можем опустить «m», что не происходят в Котлине, если мы не будем идти в противоположность соглашениям и повторять технику Java.

Ява:

public class Foo { private String mName; public void setName(String name) { mName = name; } public String getName() { return mName; } } public class Main { public static void main(String[] args) { Foo foo = new Foo(); foo.setName("Foo"); } } 

Котлин:

 fun main(args: Array<String>) { val foo = Foo() foo.mName = "Foo" // "m" gets a bit weird, don't you think? } class Foo(val mName: String) 

Это может показаться своего рода дурацкой дискуссией, но как вы себя ведете в такой ситуации? Я нашел это очень странным, поэтому остановил использование «м» в Котлине.

    Хорошая ссылка с Android

    https://android.github.io/kotlin-guides/style.html

    Специальные префиксы или суффиксы, подобные тем, которые видны в примерах name_, mName, s_name и kName, не используются, кроме как в случае свойств поддержки (см. « Свойства резервного копирования»).

    В руководстве по стилю Android Kotlin :

    Специальные префиксы или суффиксы, подобные тем, которые видны в примерах name_ , mName , s_name и kName , не используются, кроме как в случае свойств поддержки (см. « Свойства mName s_name »).

    Поэтому вам не следует использовать префикс «m» для переменных в Kotlin.

    На самом деле, я не думаю, что хорошая практика имеет префиксные переменные в публичном API, поэтому foo.mName = "Foo" не будет. Однако для частных полей это было бы приемлемо.

    Официальные соглашения для языка Котлин говорят:

    Имена свойств backing Если класс имеет два свойства, которые концептуально одинаковы, но один является частью открытого API, а другой – деталью реализации, используйте символ подчеркивания в качестве префикса для имени частного свойства:

     class C { private val _elementList = mutableListOf<Element>() val elementList: List<Element> get() = _elementList }