Size: a a a

Programming Offtop

2020 December 01

с#

саша сок #KotlinGang... in Programming Offtop
Vladimir Petrakovich
Ничего не понял.
Если надо откуда-то брать экземпляр интерфейса, ну так можно сделать expect функцию.
это не мультиплатформа
источник

VP

Vladimir Petrakovich in Programming Offtop
саша сок #KotlinGang
это не мультиплатформа
Тогда вообще непонятно. Хочется заставить реализующий интерфейс класс иметь пустой конструктор?
источник

VP

Vladimir Petrakovich in Programming Offtop
Тут либо compile time и передавать ссылку на конструктор, либо рефлексия и newInstance() без гарантий
источник

с#

саша сок #KotlinGang... in Programming Offtop
Vladimir Petrakovich
Тогда вообще непонятно. Хочется заставить реализующий интерфейс класс иметь пустой конструктор?
в общем идея в том, чтобы делать что-то такое

@TransformerAnnotation(TrimTransformer::class)
annotation class Trim

data class GetUserParams (
   @Trim
   val login: String
)

а потом в рантайме когда на сервер приходят запросы создавать инстанс трансформера рефлексией и вызывать метод transform
источник

с#

саша сок #KotlinGang... in Programming Offtop
Vladimir Petrakovich
Тут либо compile time и передавать ссылку на конструктор, либо рефлексия и newInstance() без гарантий
ну вот без гарантий и буду делать понятное дело
источник

VP

Vladimir Petrakovich in Programming Offtop
саша сок #KotlinGang
в общем идея в том, чтобы делать что-то такое

@TransformerAnnotation(TrimTransformer::class)
annotation class Trim

data class GetUserParams (
   @Trim
   val login: String
)

а потом в рантайме когда на сервер приходят запросы создавать инстанс трансформера рефлексией и вызывать метод transform
Путь спринга в общем
источник

с#

саша сок #KotlinGang... in Programming Offtop
Vladimir Petrakovich
Путь спринга в общем
выглядит выразительно
источник

с#

саша сок #KotlinGang... in Programming Offtop
лучше чем чеки внутри запроса
источник

VP

Vladimir Petrakovich in Programming Offtop
Ага, и работает совершенно прозрачно
источник

с#

саша сок #KotlinGang... in Programming Offtop
саша сок #KotlinGang
в общем идея в том, чтобы делать что-то такое

@TransformerAnnotation(TrimTransformer::class)
annotation class Trim

data class GetUserParams (
   @Trim
   val login: String
)

а потом в рантайме когда на сервер приходят запросы создавать инстанс трансформера рефлексией и вызывать метод transform
ну вот здесь да
источник

с#

саша сок #KotlinGang... in Programming Offtop
там через аннотацию находишь трансформер и смотришь что он делает
источник

с#

саша сок #KotlinGang... in Programming Offtop
я сложные чеки не хочу естественно на аннотациях, только какие-нибудь @Min, @Max
источник

с#

саша сок #KotlinGang... in Programming Offtop
и оно сможет красиво генерить мне респонс с описанием проблемы не вручную
источник

VP

Vladimir Petrakovich in Programming Offtop
саша сок #KotlinGang
я сложные чеки не хочу естественно на аннотациях, только какие-нибудь @Min, @Max
А потом получится javax.validation
источник

с#

саша сок #KotlinGang... in Programming Offtop
Vladimir Petrakovich
А потом получится javax.validation
ну я не знаю что это, но мне очень нравится как это выглядит. проверки когда запрос пришёл странно

if(name.length > 0)
   call.respond(400, NameLength())
if(... .length > ...)
    ...

вместо описания сразу в модели (которая у меня и так есть)

data class Params (
   @Length(10)
   val name: String
)
источник

BP

Bogdan Panchenko in Programming Offtop
саша сок #KotlinGang
выглядит выразительно
Это первые пару раз так. Почитайте код со спрингом
источник

с#

саша сок #KotlinGang... in Programming Offtop
Bogdan Panchenko
Это первые пару раз так. Почитайте код со спрингом
ну то есть вы предлагаете делать проверки явно ?
источник

VP

Vladimir Petrakovich in Programming Offtop
саша сок #KotlinGang
ну я не знаю что это, но мне очень нравится как это выглядит. проверки когда запрос пришёл странно

if(name.length > 0)
   call.respond(400, NameLength())
if(... .length > ...)
    ...

вместо описания сразу в модели (которая у меня и так есть)

data class Params (
   @Length(10)
   val name: String
)
А что если можно сократить код валидации без процессоров аннотаций?
Да не, бред какой-то
источник

с#

саша сок #KotlinGang... in Programming Offtop
Vladimir Petrakovich
А что если можно сократить код валидации без процессоров аннотаций?
Да не, бред какой-то
ну процессоров и не будет
источник

с#

саша сок #KotlinGang... in Programming Offtop
там в рантайме, но не меняет сути
источник