#kotlin #naming-conventions
#kotlin #соглашения об именовании
Вопрос:
В PR я получил несколько предложений по переименованию моих переменных. Были внесены предложения в fi. concat *MutableLiveData
.
private val _state = MutableLiveData<AppointmentsUiState>()
val state: LiveData<AppointmentsUiState>
get() = _state
Мои две переменные. Это ViewModel для Android. После предложений я согласен, что, возможно uiState
, было бы лучше. Тем не менее, 2 предложения были stateMutableLiveData
и stateObservable
. Мне не нравятся эти имена, но моя проблема в том, что я не могу придумать веской причины не использовать их предложения, кроме:
- Дядя Боб говорит не помещать типы данных в имена
- Наблюдаемый может быть типом, это не наблюдаемый; это LiveData, который оказывается наблюдаемым.
- Это кажется отвратительным
Почему бы не поместить типы данных в имена переменных?
Ответ №1:
- Избыточность
Вы можете видеть тип ваших переменных, поэтому, если вы напишете их тип в их имени, вы просто дублируете информацию.
- Возможность обслуживания
Вы связываете переменную с ее типом, поэтому, если вы измените тип, вам придется изменить имя.
- Двусмысленность
Если ваша переменная имеет несколько интерфейсов, вам придется выбрать один из них.
Комментарии:
1. Если язык не требует явного типа в объявлении переменной, не всегда так просто найти тип переменной. Это основное преимущество принудительной явной статической типизации, чего нет в случае с Kotlin.
2. если вы используете современную среду разработки, вы увидите выводимый тип, которого почти всегда достаточно.
3. Любой язык программирования, для эффективного использования которого требуется продвинутая среда IDE, является провалом в моей книге.