По-явански
رفتن به کانال در 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/
