Code review приложения о погоде

preview_player
Показать описание
Научитесь делать супер приятное тестовое задание для любого ревьювера. Расскажу как его смотрят, на что обратить внимание, а также разберём технические улучшения

#androidbroadcast #собеседование #codereview
Комментарии
Автор

Спасибо всем большое. Надеюсь, не сильно резал уши.

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?

preenxus