212 похожих чатов

Проектирую апи для сервиса пользователь загружает картинку и

есть 3 функции

изменить яркость, изменить контрастрость, инвертировать цвета

сейчас я для всех 3 функций обработки изображения сделал единый url (пост запрос приходит на /image/ и содержит в себе 3 поля

— id файла,

—тип операции (яркость/контрастность/инверсия),

— и json строку со всеми параметрами которые специфичны для каждой операции)

потом это сохраняется в бд, приходит воркер и каскадом ифов решает что делать


как это правильно реализовать?

11 ответов

22 просмотра

OpenClose принципом надо пользоваться вместо if'ов.

ну это может быть на уровне сериализации, или еще где. тут вопрос какие правила ты хочешь изолировать. но особенност контроллера в том что он задает порядок действий но не содержит в себе правил - все проверки или трансформации делигируются другим участникам процесса. можно на это смотреть с другой стороны - тестирование. Если у тебя контроллер не имеет логики - то его можно покрыть одним позитивным приемочным тестом + статическим анализом. Мол штуки типа... if (something === null) { doSomethingWith(something); } такую логику проверит стат анализ а потому нам пофигу. так вот, мало логики - можно пушить больше зависимостей. Много зависимостей - надо уменьшать количество тест кейсов (за счет того что ты убираешь логику в зависимости).

не вижу профита, вот где для меня профит actionAdmin(){ return action1(); } actionUser(){ return action2(); } и все это в разных классах контроллерах

а оно тебе надо?)

Michel Angelo
не вижу профита, вот где для меня профит actionAd...

У меня есть контроллер, и переиспользование всего того, что внутри контроллера, но просто с другим адресом - очень маловероятный кейс

Sergey P
а оно тебе надо?)

ну как минимум я могу использовать этот сервис в другом сервисе. я знаю что мне не потребуется что то из фарша реквеста

Sergey P
ну это может быть на уровне сериализации, или еще ...

Ну вот обертка для простой логики сервиса, а есть ли смысл вообще такое тестами покрывать? Это тривиальный кейс. Опять таки, это будет с моками и прочим, что делает тест несколько непростым.

razumovsky r
тебе понадобится ягни

понадобится "You Aint gonna need it" звучит интересно

Павел Г.
У меня есть контроллер, и переиспользование всего ...

а почему вот для тебя, скажем именование переменных и классов по ddd имеет смысл, а именование тех же ендпоинтов не имееет смысла чтобы они также были читаемы и понятны?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта