Комментарии 10
Здесь фактически значение null могло бы появиться только в том случае, когда animatedView равен null. Добавление простой проверки if (animatedView != null) избавит нас от цепочки безопасных вызовов. Но в данном примере вообще нет необходимости в том, чтобы animatedView принимало значение null. Поэтому лучше его сделать lateinit переменной, и тогда код вообще не будет содержать проверок на null
Конечно необходимости нет. Пока однажды не отстрелите себе ногу из-за того, что инициализация почему-то не прошла либо метод вызвался до инициализации.
Может быть фрагмент сразу после создания в мусорку отправился, может быть переход слишком быстрым был, может быть ещё куча всяких условий.
lateinit не стоит бездумно лупить куда попало, обязательно нужно держать в голове порядок инициализации и использования переменной, иначе потом будет больное ой в виде UninitializedPropertyAccessException.
0
Конечно, вы правы. Обязательно нужно учитывать то, в какие моменты может произойти обращение к переменной, прежде чем делать ее lateinit.
0
А кроме этого lateinit переменные фрагмента для вью прекрасное место для утечки памяти. Как и вообще переменные фрагмента вью хранящие если им null не присваивать.
0
ИМХО по возможности лучше использовать «by lazy», вместо «lateinit». :-)
0
Спасибо за статью и за наглядные примеры.
0
запрет на использование префикса _ для теневых полей
А какие еще бывают варианты именования для backing properties?
0
Для теневых полей можно использовать название в обычном формате, например, val state и private val currentState. Это скорее субъективное предпочтение, связанное с тем, что код с обилием символов _ может казаться «замусоренным». Кому-то наоборот больше нравится _ из-за краткости. Самое главное, чтобы в команде эти детали были согласованы и специалисты писали код проекта в одном стиле.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Kotlin Best Practices