Не включает тип данных в имя переменной

#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, является провалом в моей книге.