Научитесь делать супер приятное тестовое задание для любого ревьювера. Расскажу как его смотрят, на что обратить внимание, а также разберём технические улучшения
Спасибо всем большое. Надеюсь, не сильно резал уши.
bolnoi
41:23
В чём разница между lateinit и checkNotNull конкретно в этом случае?
1. В какой ситуации она может быть не инициализирована/null? Если инициализация происходит в onCreate Application.
2. Чем лучше checkNotNull чем lateinit? Если и в обоих случаях будет краш.
СергейПанов-зц
Хотелось бы ликбез про модули (профит, логика разбития)
SergeyAll
Формат актуальный очень. Спасибо участникам!!!
redfox
41:50 - встану на сторону Сергея. Аргумент "Если у вас моделька из 10 полей, а показываете только название" - так себе аргумент, потому что моделька(в идельном мире) для адаптера должна содержать только поля, необходимые для отображения. Соответственно все поля должны сравниваться. А если у вас 1 поле для отображеня и 9 для чего то еще - что то не так у вас с моделькой.
Преимуществом сравнения через equals является то, что когда вы добавляете новое поле в эту модельку(при условии что она является data классом), вам не надо помнить что это же поле надо еще гда то в DIFF UTILS в методе прописывать, а оно автоматом будет сравниваться. Иначе из за невнимательности при изменении этого нового поля UI может не отобразить это изменение
BelokonRoman
классный формат. Надеюсь увидеть подобное в будущем)
temurisroilov
на 58:57 разве это разрывает связь Structured Concurrency? ведь тут нет скоупа не зависящего от парент скоупа. coreutineScope наследует парент скоуп
AS-ivvx
31:27, а как можно релизный билд еще защитить? Имеете ввиду прописывать в нем api keys?
arsenthompson
Блин эфир конечно, очень крутой был )) Я конечно пока многое не понимаю в силу того-что обучаюсь только, но все же . ps.Кирилл ты качаться начал ? )
luckytima
По навигации момент да, спорный, но т.к. в проекте используется cicerone можно предположить что человек читал их доки. Там рекомендуют так делать, и вообще считают это одной из фишек cicerone :)
SiarheiSm
Спасибо за видос, очень полезно! Хотелось бы узнать целосообразность такого модульного проекта. Какой профит от модулей в данном небольшом проекте? Почему не монолит?
РусланСитников-ум
Где можно прочитать про разбиение проекта на модули?
kafychannel
я так и не понял в чем же преимущество многомодульности. Только в том, что быстрее компилиться будет? PS: тут стек скорее всего выбирался из приложения gitfox от Цховребова.
pavlosoia
Кирилл, спасибо за разбор. Единственное, что не совсем понял что имелось ввиду, когда вы на 46:37 сказали "Когда же в Котлине разрешат менять типы"
stefanserkhir
интересно получилось, хотелось по больше гуд практис или всяких интересных подходов по решение каких то проблем или ежедневных тривиальных задач
volodymyr.od.ua.
Лучший вариант на Ваше усмотрение, как получить название местности по latlng?
dzenbuddha
нет ничего плохого в bundleOf и его capacity
fun bundleOf(vararg pairs: Pair<String, Any?>): Bundle = Bundle(pairs.size)
kursiks
А можно ссылку на доклад по корутинам от Кирила ?
eugenegaragulya
Я тоже использую toothpick, т. к. он имеет меньше механик и стоимость входа меньше.
В начале проекта самое то, потом его можно заменить на более "тяжелое", когда придет время
igorpi
Парень, если ты читаешь комментарии, а почему ты именуешь переменные через нижнее подчеркиваение, а не camelCase?