Использование префикса " m " для переменных в Kotlin
ну, использование префикса" m " для имен переменных стало обычным в программировании, в основном в Android, но с тех пор, как Котлин прибыл, эта незначительная вещь меня немного беспокоит. Внутри родительского класса нет ничего нового, но установка и получение переменных из другого класса не кажется действительно комфортным, потому что в Java мы создаем (и называем) наши сеттеры и геттеры, поэтому мы можем опустить "m", что не происходит в Котлине, если мы не идем в противоположность соглашениям и не повторяем Java метод.
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?
}
data class Foo(val mName: String)
Как вы вели себя в такой ситуации? Существует ли новая конвенция?
3 ответов
хорошая ссылка от Android
https://android.github.io/kotlin-guides/style.html
специальные префиксы или суффиксы, как те, которые видны в названии примеров_, mName, s_name, и ХНАГХ, не используются, за исключением бэк свойства (см. "поддержка свойства").
на Руководство По Стилю Android Kotlin:
специальные префиксы или суффиксы, как те, что видны в примерах
name_
,mName
,s_name
иkName
, не используются, кроме как в случае свойств поддержки (см."поддержка свойства").
поэтому вы не должны использовать префикс "m" для переменных в Котлине.
Я на самом деле не думаю, что это хорошая практика иметь префиксные переменные в общедоступном API, таким образом foo.mName = "Foo"
было бы нежелательным. Для частная поля это было бы приемлемо, хотя.
чиновник конвенций на Котлинском языке говорят:
имена для резервного копирования свойств
Если класс имеет два свойства, которые концептуально одинаковы, но один является частью открытого API, а другой - деталь реализации, используйте подчеркивание в качестве префикса для названия частной собственности:
class C {
private val _elementList = mutableListOf<Element>()
val elementList: List<Element>
get() = _elementList
}