Size: a a a

Android Architecture

2020 July 22

K

Kirill Vasiliev in Android Architecture
request.newBuilder()
источник

AU

Andrey Ubububu in Android Architecture
Quantum Harmonizer
new Request(…)
в конструктор кидать то, что мы в билдере используем?
источник

QH

Quantum Harmonizer in Android Architecture
Andrey Ubububu
в конструктор кидать то, что мы в билдере используем?
ну да, не оставляя возможности сделать new Builder().build() и свалиться, или написать глупость вроде new Builder().url(…).url(…).url(…)
источник

AU

Andrey Ubububu in Android Architecture
но усложнять сбор запроса, если нужно чуть больше параметров воткнуть
источник

K

Kirill Vasiliev in Android Architecture
А почему не использовать старый реквест, модифицировав его через .newBuilder()?
источник

AU

Andrey Ubububu in Android Architecture
так он не модифицируется, а мы через новый билдер создадим новый реквест
источник

QH

Quantum Harmonizer in Android Architecture
Kirill Vasiliev
А почему не использовать старый реквест, модифицировав его через .newBuilder()?
а где в условии значится, что какой-то реквест уже существует?)
источник

AD

Aleksey D. in Android Architecture
Kirill Vasiliev
А почему не использовать старый реквест, модифицировав его через .newBuilder()?
val newRequest = oldRequest.copy(path = ''books/like'')
источник

Kd

Konstantin dmz9 in Android Architecture
билдер тебе дает возможность передать недостроеный объект по цепочке каким то другим обработчикам чтобы они что нибудь туда добавили.
с конструктором такое не получится
источник

Kd

Konstantin dmz9 in Android Architecture
Konstantin dmz9
билдер тебе дает возможность передать недостроеный объект по цепочке каким то другим обработчикам чтобы они что нибудь туда добавили.
с конструктором такое не получится
о глядите да это же chain of responsibility 😂
источник

AD

Aleksey D. in Android Architecture
Konstantin dmz9
билдер тебе дает возможность передать недостроеный объект по цепочке каким то другим обработчикам чтобы они что нибудь туда добавили.
с конструктором такое не получится
выглядит, как отличное способ создать кучу ошибок 🙄
источник

Kd

Konstantin dmz9 in Android Architecture
Aleksey D.
выглядит, как отличное способ создать кучу ошибок 🙄
выглядит как будто кто то не писал сложные программы )
источник

QH

Quantum Harmonizer in Android Architecture
Konstantin dmz9
выглядит как будто кто то не писал сложные программы )
выглядит как бессмысленный переход на личности
источник

Kd

Konstantin dmz9 in Android Architecture
Quantum Harmonizer
выглядит как бессмысленный переход на личности
ну, кстати да, так и есть, микроагрессия какая то даже
источник

AD

Aleksey D. in Android Architecture
Konstantin dmz9
выглядит как будто кто то не писал сложные программы )
val builder = Builder().url(''https://example.com'')
val newClient1 = newClient1(builder)
val newClient2 = newClient2(builder)

fun newClient1(builder: Builder) = builder.url(''https://kek.lol'').build()
fun newClient2(builder: Builder) = builder.path(''/main'').build()


а потом сиди и чеши репу, кто тебе по яйцам с вертухи дал
источник

Kd

Konstantin dmz9 in Android Architecture
Aleksey D.
val builder = Builder().url(''https://example.com'')
val newClient1 = newClient1(builder)
val newClient2 = newClient2(builder)

fun newClient1(builder: Builder) = builder.url(''https://kek.lol'').build()
fun newClient2(builder: Builder) = builder.path(''/main'').build()


а потом сиди и чеши репу, кто тебе по яйцам с вертухи дал
есть 3 метода эту проблему решить
1. бросай исключение когда кто то пытается поменять уже установленый урл
2. создается новый билдер внутри с новым объектом когда вызывается .url
3. сделай урл параметром конструктора билдера чтобы его нельзя было изменить
источник

AD

Aleksey D. in Android Architecture
1. лови краши в проде (или не лови)
2. да, но можно же просто client.copy(url = 'http://kek.lol')
3. смотри второй пункт, это уже куча «если» к привычному всем билдеру, которые ставят под вопрос его необходимость
источник

Kd

Konstantin dmz9 in Android Architecture
Aleksey D.
1. лови краши в проде (или не лови)
2. да, но можно же просто client.copy(url = 'http://kek.lol')
3. смотри второй пункт, это уже куча «если» к привычному всем билдеру, которые ставят под вопрос его необходимость
если ты делаешь запрос на какой то эндпойнт - нельзя его давать менять тем кто дописывает в билдер что либо, т.к. это нелогично по сути.
хочешь обратиться на новый урл - делай новый объект запроса через билдер
источник

Kd

Konstantin dmz9 in Android Architecture
типа тебе дали допилить фичу, а ты стал пилить другую фичу - это вообще то не то что от тебя хотели
источник

QH

Quantum Harmonizer in Android Architecture
Konstantin dmz9
если ты делаешь запрос на какой то эндпойнт - нельзя его давать менять тем кто дописывает в билдер что либо, т.к. это нелогично по сути.
хочешь обратиться на новый урл - делай новый объект запроса через билдер
или не через билдер
короче, не давайте никому мутабельные объекты вроде билдеров
источник