Size: a a a

Kotlin Community

2020 October 30

OY

Oleg Yukhnevich in Kotlin Community
окей
тогда я ещё скажу своё решение, что на счёт него
я сделал минимальный билдер класс и теперь оно делается так
Payload { data("text"); metadata(byteArrayOf(1, 2, 3)) }
и тогда у data/metadata пару оверлоадов + можно достаточно просто это дело расширять под свои нужды
лучше это, или хуже 15 оверлоадов или BRP.fromString("text") и тд, что думаете?
учитывая, что это публичный апи либы
источник

AV

Anton Vlasov in Kotlin Community
Vladimir Petrakovich
Так на самом деле там вариант только один. Остальные 99 - комбинация разных преобразований параметров для удобства.
тем более лучше через конструкторы.
города из if else и проверки через инстанс это подтвердят
источник

VP

Vladimir Petrakovich in Kotlin Community
Oleg Yukhnevich
окей
тогда я ещё скажу своё решение, что на счёт него
я сделал минимальный билдер класс и теперь оно делается так
Payload { data("text"); metadata(byteArrayOf(1, 2, 3)) }
и тогда у data/metadata пару оверлоадов + можно достаточно просто это дело расширять под свои нужды
лучше это, или хуже 15 оверлоадов или BRP.fromString("text") и тд, что думаете?
учитывая, что это публичный апи либы
Если назвать это buildPayload, то очень даже норм.
А там в теории может появиться что-то ещё?
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Если назвать это buildPayload, то очень даже норм.
А там в теории может появиться что-то ещё?
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Если назвать это buildPayload, то очень даже норм.
А там в теории может появиться что-то ещё?
вот кстати с buildPayload - это да, что-то я забыл про это
источник

VP

Vladimir Petrakovich in Kotlin Community
Так всё уже готово, в чём тогда вопрос? 😄
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Так всё уже готово, в чём тогда вопрос? 😄
оно не готово ещё, в этом и суть, что хотелось бы узнать другие возможные варианты
источник

VP

Vladimir Petrakovich in Kotlin Community
Oleg Yukhnevich
оно не готово ещё, в этом и суть, что хотелось бы узнать другие возможные варианты
DSL - беспроигрышный вариант в котлине.
А этот BRP - это ваш класс или из джавовой либы?
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
DSL - беспроигрышный вариант в котлине.
А этот BRP - это ваш класс или из джавовой либы?
из ktor-io)
источник

AM

Andrew Mikhaylov in Kotlin Community
Oleg Yukhnevich
окей
тогда я ещё скажу своё решение, что на счёт него
я сделал минимальный билдер класс и теперь оно делается так
Payload { data("text"); metadata(byteArrayOf(1, 2, 3)) }
и тогда у data/metadata пару оверлоадов + можно достаточно просто это дело расширять под свои нужды
лучше это, или хуже 15 оверлоадов или BRP.fromString("text") и тд, что думаете?
учитывая, что это публичный апи либы
Жаль, что в дслке нет возможности зафорсить наличие вызова конкретного метода, как обязательного data у вас, но в остальном это вполне логичное решение. В джаве, я думаю, я б такую задачу билдером и решал, аналогия вполне прямая в котлин получается.
источник

OY

Oleg Yukhnevich in Kotlin Community
Andrew Mikhaylov
Жаль, что в дслке нет возможности зафорсить наличие вызова конкретного метода, как обязательного data у вас, но в остальном это вполне логичное решение. В джаве, я думаю, я б такую задачу билдером и решал, аналогия вполне прямая в котлин получается.
в теории, data может быть пустой)
поэтому указание только metadata - валидный кейс
источник

VP

Vladimir Petrakovich in Kotlin Community
Oleg Yukhnevich
из ktor-io)
Тогда я бы сделал конструктор с data и metadata, принимающими этот класс. Если что всегда можно накинуть ему в компаньон методы для создания из разных других типов.
источник

AM

Andrew Mikhaylov in Kotlin Community
Oleg Yukhnevich
в теории, data может быть пустой)
поэтому указание только metadata - валидный кейс
А, ладно) Я по оригинальному посту подумал иначе.
источник

VP

Vladimir Petrakovich in Kotlin Community
Oleg Yukhnevich
в теории, data может быть пустой)
поэтому указание только metadata - валидный кейс
Пустая data по дефолту - это сомнительное поведение. Если такое хочется, мне кажется, можно и явно указать.
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Тогда я бы сделал конструктор с data и metadata, принимающими этот класс. Если что всегда можно накинуть ему в компаньон методы для создания из разных других типов.
я сейчас смотрю в сторону 2-ух ф-ий
одна принимает 2 BRP
вторая - билдер
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Пустая data по дефолту - это сомнительное поведение. Если такое хочется, мне кажется, можно и явно указать.
может быть
источник

VP

Vladimir Petrakovich in Kotlin Community
Oleg Yukhnevich
я сейчас смотрю в сторону 2-ух ф-ий
одна принимает 2 BRP
вторая - билдер
Мне кажется, самое то 👍
источник

OY

Oleg Yukhnevich in Kotlin Community
оно просто имеет значение в малых кейсах
единственное, не совсем валидный кейс наверно это Payload {} - но опять же, сомнительно, что кто-то такое будет делать
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Пустая data по дефолту - это сомнительное поведение. Если такое хочется, мне кажется, можно и явно указать.
может быть и лучше падать сразу, по выходу из билдера, если нет explicit data, не знаю
источник

VP

Vladimir Petrakovich in Kotlin Community
Oleg Yukhnevich
может быть и лучше падать сразу, по выходу из билдера, если нет explicit data, не знаю
Мне кажется, намного лучше. Чем быстрее упадёт код, который делает не то, что задумано, тем лучше.
А иначе это какой-то protobuf style.
источник