Алексей
"Как создавать кастомные виджеты?
Ответ:
Компоновать виджеты внутри одного (вместо наследования)."
И тут стало интересно :)
trashkalmar
Давно хотел спросить. Какой резон делать все классы, более-менее похожие на модели, data class? Что, прям они все постоянно копируются, сравниваются и toString()-ятся? У нас в большом проекте всего два data class, потому что они расщепляются на компоненты или явно копируются.
trashkalmar
Там же генерится туева хуча кода. Типа, авось когда-нибудь пригодится или прогардом отрежется?
trashkalmar
Или я чего-то не знаю?
Alexey
Alexey
гетеры сеттеры, tostring и copy
Alexey
ну и функции сравнения
Alexey
поле то вроде одно, через свойство оно достается
trashkalmar
если декомпильнуть любой датакласс, можно неслабо удивиться
Konstantin
Alexey
как в итоге в jvm код запишется не знаю, но думаю оверхеда не должно быть
Konstantin
а еще то что деструкцию удобно писать
val (x,y,z) = A(x=1,y=2,z=3)
Konstantin
это кстати поможет когда в дата 10+ полей к примеру и сомневаешься все ли они используются
Konstantin
деструктурировав по отдельным val - в коде увидишь подсветку что некоторые не используются (если реально в коде не используются), оченб удобно
Konstantin
Konstantin
Ferrero
Alexey
Konstantin
Alexey
trashkalmar
Alexey
читаемость кода - это самая первая очередь о чем надо заботиться
Konstantin
Konstantin
было дело находил статью с прикольной темой
Konstantin
мы, говорит, выпилили дата классы из проекта т.к. <какая то там надуманая причина>, и среди прочего - пихали логику в них и что то не взлетело.
я например в дата классах вообще логику не пишу, и получается что они просто как dto используются для передачи данных между слоями приложения, и как то проблем вообще не ощутил ниразу
trashkalmar
Alexey
trashkalmar
а мне не нужно сравнение, мне нужно хранение данных
trashkalmar
не нужны компоненты и копирование. Но всё равно по логике это должен быть data class
Alexey
ну ради бога) это экономия на спичках
У тебя может быть в разработке некоторый стандарт. Если ты определишь какие классы делать data, а какие нет и почему, то можешь использовать и коллегам своим рассказать
Ferrero
Ключевое слово data добавляет реализации хэшкода, equals вот и всё
Alexey
Igor
Ребят кто как вычисляет и устраняет проблемы в скорости UI?
trashkalmar
Konstantin
Alexey
trashkalmar
и чем это мешает?
Умножаем на количество data class в проекта, на количество полей (плюс-минус). Грубо: сотня модельных классов - пара мегабайт потенциально мёртвого кода
Konstantin
Alexey
Ferrero
trashkalmar
в бинаре, да
Konstantin
программы ты для людей пишешь а не для машин
Konstantin
чего их жалеть, каждый год ускоряются железяки и память растет
Konstantin
если жалеешь - пиши на ассемблере, чо уж там )
Igor
инспектор же не отлаживает в реалтайме, там мало чего можно узнать по поводу перфоманса, разве что глубокую иерархию увидишь в дереве
да но иерархия тоже может подсказать какие-то вещи, но и профайлер не самая удобная штука, можно посмотреть что и как долго делалось в конкретном потоке, но не всегда очевидны причины, допустим почему тот или иной метод отрабатывал так долго, конечно можно копать метод, но и тут есть подводные камни когда происходит переключение потоков и и прочее, поэтому хотел узнать весь спектр инструментов, возможно, кто-то занимался серьезным перфомансом, плюс есть же SurfaceView, merge, ViewStub и другие фичи, которые могут помочь
Ferrero
Konstantin
автор наверное упрт )
Sergey
Её тоже критиковать нельзя? 😉
Anonymous
Я наследовался от FrameLayout, как мне программно добавить к LayoutParams ?android:attr/actionBarSize?
Sergey
Memory leak
🙈
Alexey
Я наследовался от FrameLayout, как мне программно добавить к LayoutParams ?android:attr/actionBarSize?
public static int[] getColors(Context context, int[] attrs, int[] defaultColors) {
TypedArray tArray = null;
try {
TypedValue tValues = new TypedValue();
tArray = context.obtainStyledAttributes(tValues.data, attrs);
int[] colors = new int[attrs.length];
for (int i = 0; i < colors.length; i++) {
colors[i] = tArray.getColor(i, defaultColors[i]);
}
return colors;
} catch (Exception e) {
return defaultColors;
} finally {
if (tArray != null) {
tArray.recycle();
}
}
}
Alexey
Anonymous
dp в пиксели надо конвертить?
Алексей
Раз уж просите: почему Model знает о Presenter?
Alexey
Alexey
Alexey
пруфы?
Vladislav
В ViewPager лежит recycler. как при скроле прятать хедер? пробовал layout behavior, не помогло(
Алексей
стрелоски там это не зависимости, а data flow. Так что нет)
Sergey
Ну, согласись, та статья для новичков. Стоило всё же привести такой пример кода, который у новичка будет формировать правильный подход к кодингу.
Vladislav
Sergey
Надо обрабатывать onDestroy, и модель, наверное, должна была быть синглтоном. Как-то так
Alexey
да не важно, прост надо было на изменения модели как-то подписаться, а не так чтобы модель презентером управляла.
новичкам не рикамендую
Sergey
Бес сидит в мелочах. Нюансы в примерах важны.
Кирилл
Alexey
не за просто так
Sergey
Да, ладно!
В общем, я всё.
Мир, дружба, жевачка!
🤝
Akim
Может коллективно пильнуть курс по разработке?