Size: a a a

Android Architecture

2021 June 24

A

Aleksei in Android Architecture
Ребята, data source - это источник данных в виде, например, ретрофита или базы данных, или же так можно назвать еще и дата-классы сущностей?
источник

АМ

Артём Мельник... in Android Architecture
привет всем, можно ли как-то ограничить скоуп вызова функции, например, функцию можно было бы вызывать в определенном классе, например, эту функцию вызывать только в наследниках Context'а
fun Int.toDp(context: Context) = this * context.resources.displayMetrics.density
источник

s

someone_guy in Android Architecture
Дата класс не является источником данных в строгом понимании термина. Только шаблоном этих данных.
источник

L

Leonid in Android Architecture
Сделать обычную функцию и не засорять namespace у Int.
источник

A

Aleksei in Android Architecture
а если я например получилот сервера джейсон объект - этот объекти есть источник данных?
источник

АМ

Артём Мельник... in Android Architecture
чем я засоряю, мне тогда надо будет 2 аргумента передавать, я же хочу от них избавиться
источник

L

Leonid in Android Architecture
Потому что я не хочу, чтобы мне предлагали преобразовать в dp переменную, в которой находится год рождения или число посетителей в кинотеатре.

Точно так же не хочу, чтобы переменную с dp предлагали отформатировать как номер телефона или дату.

А потом придут ещё дцать программистов, и добавят свои интересные extensions.
источник

s

someone_guy in Android Architecture
У источника данных есть конкретная цель - поставлять данные по запросу (иногда не по запросу). Сам по себе лата класс эту цель не выполняет.  Но при этом дата класс как правило является частью источника данных, чтобы задать формат этих данных.

Если ты получил от сервера объект, то источником данных будет тот класс, который вернёт тебе этот объект. При этом ему (объекту) совсем не обязательно быть дата-классом.
источник

JF

Jorik Fat in Android Architecture
источник данных это database.db/socket/file
конечное консистентное хранилище
источник

АМ

Артём Мельник... in Android Architecture
как часто вы пишите название метода, которая начинает на toDp? тем более, никто не мешает сделать этот экстеншен приватным в определенном классе, где такое действительно нужно
источник

JF

Jorik Fat in Android Architecture
не понял, это как?
источник

JF

Jorik Fat in Android Architecture
этот объект это сами данные
источник

L

Leonid in Android Architecture
Сделайте приватным, чтобы никому не мешать. Это норм вариант.

А представьте, что потом на проект придут ещё дцать программистов, и добавят в Int сотню своих интересных узкоспециальных extensions, потому что им так удобно. Оно вам такое надо?
источник

АМ

Артём Мельник... in Android Architecture
так и спрашиваю, как можно ограничить скоуп, чтобы вызывать только в наследниках контекста, как надо или как не надо делать, мне не особо интересно, потому что это вопрос, чтобы удовлетворить мою хотелку
источник

AN

Alexandr Nevyantsev in Android Architecture
ну, чтобы исключить коллизии id-шников
мы для таких вещей пишем менеджер, который выдает хэши и гарантирует, что хэш уникальный
id_hash
если я вообще правильно понял суть idшников)
источник

JF

Jorik Fat in Android Architecture
по-моему это уже прям явный оверинженеринг

но это тоже решение
источник

L

Leonid in Android Architecture
Сделать приватным. Может быть, internal прокатит в пределах package.

А почему вы делаете extension у Int, а не у Context? У Context ведь тоже можно, только передавать Int как параметр. Разницы нет никакой 😁

Я это к тому, что extensions не должны допускать неоднозначностей.

Int.toDouble() - норм, ибо где же ему ещё быть.

Int.toDp(Context) - а почему не у контекста, а почему не обычная функция, а почему не метод класса, и т.д.

Нужно искать разумный баланс.
источник

АМ

Артём Мельник... in Android Architecture
interanl - ограничивает область видимости на уровне компилироуемой единицы (модуля) ведь, ну а так да, нет особо смысла к Int'у это делать
источник

JF

Jorik Fat in Android Architecture
а вот это интересное решение, возьму себе на заметку
источник

JF

Jorik Fat in Android Architecture
как вариант - запилить многомодульность. Но думаю это Вам не подойдет
источник