По-явански
الذهاب إلى القناة على Telegram
Пишу про Java-технологии, Kotlin и Android-разработку. Редко но метко. Кодревью: http://javanese.online/%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0/ Поболтать IRL: @coffeeCodeEverywhere Автор: @Harmonizr Менеджер по рекламе: /dev/null
إظهار المزيد823
المشتركون
-424 ساعات
-57 أيام
-230 أيام
أرشيف المشاركات
823
Ещё одно наблюдение про билдеры. Классический билдер на кодревью (вне IDE) помогает понять, что происходит. Без билдера эту же роль могут выполнять локальные переменные.
http://javanese.online/%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%BD%D1%8B%D0%B5_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/builder/#%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B
823
Совет от Google: засуньте null-безопасность всюду, пишите всё с вопросиками. Удачной отладки!
823
В IDEA есть рефакторинг «Replace Constructor with Builder». Хотелось бы также иметь противоположный.
http://javanese.online/%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%BD%D1%8B%D0%B5_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/builder/
823
823
Должны ли DTO быть изменяемыми?
http://javanese.online/%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%BD%D1%8B%D0%B5_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/immutable_DTO/
823
Очень часто вижу мучения фронтов, связанные с тем, что бэк возвращает ответ, завёрнутый в какой-то мусор. Вот один из способов прозрачно развернуть такой ответ при использовании Retrofit.
https://youtu.be/t34AQlblSeE?t=27m56s
823
Синглтоны хороши только в роли оптимизации.
А вот глобальное состояние — это антипаттерн.
http://javanese.online/%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%BD%D1%8B%D0%B5_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/singleton/
823
Спасибо тем, кто решает задачи и сообщает об ошибках.
Исправил обе — «Расставить знаки» и «Деление чисел с плавающей точкой».
Готовлю статьи о шаблонах проектирования, но и многопоточку стороной не обойду.
823
Что наиболее актуально для обучающего курса?
anonymous poll
Хардкорная многопоточка — lock-free и wait-free алгоритмы – 25
👍👍👍👍👍👍👍 43%
Шаблоны и антишаблоны проектирования. Чем хороши, плохи или ужасны те или иные ШП в зависимости от контекста – 22
👍👍👍👍👍👍 38%
Дописать главу про стдлибу — Tree/Enum/Weak Map/Set, java.time, BigInteger/BigDecimal, NumberFormat, String.format, ... – 5
👍 9%
ФП на Java: лямбда-выражения и функциональные интерфейсы, стримы и т. д. – 5
👍 9%
Другое (в личку @Harmonizr) – 1
▫️ 2%
👥 58 people voted so far.
823
Пора перестать ставить
@Expose на все поля DTO.
А для тех, кто рекомендует делать clear+addAll вместо простой замены одной коллекции на другую, есть отдельный котёл.
Ревью для Алексея.
http://javanese.online/%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0/expose_clear_addall/823
#android
1. Когда вертикальный
LinearLayout внутри ScrollView измеряет своих детей, в качестве heightSpec они получают количество оставшихся свободных пикселей, режим UNSPECIFIED. Для тех детей, до которых нужно скроллить, количество оставшихся пикселей — 0.
2. Когда RecyclerView находится в режиме autoSizing, а высота пришла ненулевая, он принимает эту высоту, невзирая на Mode.
И вот, эти два фактора столкнулись: autoSizing работал некорректно, не отображалось несколько последних строк.
Лечится наследованием RecyclerView и переопределением onMeasure. (Нужно передать нулевую высоту, если она UNSPECIFIED.)823
Спасибо внимательным читателям за жалобы на то, что решения некоторых задач не принимаются.
823
Вот поэтому под Android так больно разрабатывать.
И по той же причине я не рекомендую Android в качестве первой платформы.
http://javanese.online/%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8/%D1%84%D1%83%D0%BD%D0%B4%D0%B0%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B_android/
823
Множество современных Android-приложений выглядит именно так: хардкод строк, уйма
? и !!, плохое именование, горы инжектов, рефлексия.
Кодревью для Александра.
http://javanese.online/%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0/%D1%82%D0%B8%D0%BF%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_android-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_dagger_rxjava/823
Больше не использую для перевода строк один из самых кривых классов JDK —
java.util.Properties. Теперь — никаких попыток считать несуществующую строку перевода.
Весь этот зоопарк сменился полиморфизмом.
https://github.com/JavaneseOnline/JavaneseBackend/tree/master/src/main/kotlin/online/javanese/locale823
Здесь собраны всевозможные ошибки начинающих Android-разработчиков при обращении с фрагментами, асинхронщиной, null-safety и не только.
Кодревью для Никиты.
http://javanese.online/%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0/achatina-kotlinexample/
823
Отныне на javanese.online не используется шаблонизатор. Thymeleaf, который был в первой версии, — ничего так, но статически типизированный DSL на Kotlin более гибкий, настраиваемый и шустрый.
Горячая генерация страницы ускорилась в пять раз, с пяти миллисекунд до одной на моей машине, холодная — страшно даже представить (с Thymeleaf занимала секунды две).
Когда я убрал Thymeleaf из зависимостей, shadow JAR (собственные классы плюс зависимости) похудел на 7 МБ — не стало Groovy, javassist и OGNL.
Вёрстка страниц на DSL: https://github.com/JavaneseOnline/JavaneseBackend/tree/master/src/main/kotlin/online/javanese/page
823
Как написать Builder на Kotlin, чтобы его было удобно использовать из Java? И вообще, что не так с билдерами?
Почему в Android неудобный механизм передачи строковых ресурсов?
Кодревью для whalemare.
http://javanese.online/%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0/builder_pattern_in_Kotlin/
