
Adel
06.09.2018
12:32:53
это можно и одним классом сделать.

Артур Евгеньевич
06.09.2018
12:33:12
Мне кажется любой загон в сторону хорошей архитектуры по началу выглядит оверинженирингои

Adel
06.09.2018
12:33:39
ну давай что там для крупных?

Google

Adel
06.09.2018
12:33:53
в логах фильтровать? :)

Артур Евгеньевич
06.09.2018
12:34:02
Т.е мы заботимся об архитектуре, чтобы снизить стоимость поддержки кода черзе 3 года, а не в данный момент - это мое видение

Adel
06.09.2018
12:34:24
я полностью за. но чо мы там снизим то? :)
разными классами эксепшенов
и это... ты сейчас говоришь с человеком, создававшим класс эксепшена на каждый чих :)
так что... вот

Артур Евгеньевич
06.09.2018
12:35:55
Время, которое наобходимо будет понять на то, что все таки случилось.
может быть у нас дохера контекстов в котрых юзер может что то публиковать, и юзер везде может по разнмоу пониматсья

Adel
06.09.2018
12:36:37
эти вещи даже в лог не идут. по крайней мере в моих проектах.

Артур Евгеньевич
06.09.2018
12:37:10
а так в логах посмотрели что за экспшн, перешли в класс, посморели какими он данными оперирует, откуда еще может быть вызван
)))

Google

Артур Евгеньевич
06.09.2018
12:39:11
еще и быстрее раза в 3

Adel
06.09.2018
12:39:11
плюсы DI я могу обьяснить
а вот с эксепшенами чот заминка вышла

Артур Евгеньевич
06.09.2018
12:40:41
ну самая простая практическая пользя это то что можно по разному отлавливать и реагирвоать на эти ошибки
я вот последнее время рассматриваю экспш как событие
у тебя же не возникает вопроса почему на кжадое событие свой листенер, а не 1 общий на всё что есть?
И вот тут ты можешь возразить, что у обраобтчика событий есть бизнесс или инфраструктурная логика какая то
Но у обраобтки ошибки она тоже должна быть.
А если ты для каждой ошибки просто крэшишь запрос и выводишь текст ошибки...то тут наверно ServiceError достаточно будет одного на весь проетк

Adel
06.09.2018
12:42:32
ну смотри. давай допустим что пост нельзя запаблишить если у него текст пустой и если он уже запаблишен. это как бы разные ошибки, но это клиентские ошибки. приложению вообще по барабану почему не получилось, оно просто покажет текст ошибки юзеру и забудет о нем...

Артур Евгеньевич
06.09.2018
12:43:32

Adel
06.09.2018
12:43:41
для любых других ошибок - другой вариант - Internal error юзеру и в лог.

Артур Евгеньевич
06.09.2018
12:43:52
но на уровне бизнесс логики это разные события
а предстваь будет 50 вариантов отказа:
не достаточно баланса
пост содержит порноматериалы
юзер постил уже за эти сутки
юзер забанен в определеннйо группе
....

Herman
06.09.2018
12:45:14

Adel
06.09.2018
12:45:58
намучался с ним в свое время
хотя все это кроме порно - это ошибки авторизации. не совсем логика.

Herman
06.09.2018
12:47:50

Google

Adel
06.09.2018
12:47:52
да и порно... логики то не касается. но уже есть о чем подумать.
я тоже всю жизнь оборачивал а сейчас задумался - а нафиг я это делал

Артур Евгеньевич
06.09.2018
12:48:14
что значит любые в другой

Herman
06.09.2018
12:48:49
а почему?
ну вроде как если принципу лисков следовать то нужно оборачивать
а то заебешься указывать что у тебя интерфейс бросает ошибку базы данных, редиса, мемкеша и т.д.

Артур Евгеньевич
06.09.2018
12:49:31
если у тебя ошибка типо UserHasNoPriviligiesToEditTable то конечно на более высоком уровне нужно создать CantSaveToDbError, а еще на более высоком CantSavePost

Adel
06.09.2018
12:50:18

Артур Евгеньевич
06.09.2018
12:51:01
Ну эт точно неудачный пример на мой взгялд)

Adel
06.09.2018
12:51:10
ну вот както так. да. а почему? мне снаружи там... вообще непонятно что делать с этими эксепшенами. единственное что я наверху знаю, что если эксепшен логики - показать юзеру мессаж. если другой - показать юзеру Inner exception и залогироватью

Артур Евгеньевич
06.09.2018
12:51:24
ты просто перекидываешь экспшн, добавляя неудачное сообщение общео характера

Adel
06.09.2018
12:51:39

Артур Евгеньевич
06.09.2018
12:52:14
ну CantCreateTestException - уже выглядит верхом абстракции в моем понимании - т.е просто констатация факта
дальше уже некуда оборачивать его

Adel
06.09.2018
12:53:02
я говорю - Http слою вообще пофиг на эти тонкости. Ему надо "если эксепшен логики - показать юзеру мессаж. если другой - показать юзеру Inner exception и залогировать"

Артур Евгеньевич
06.09.2018
12:53:18
+ ты все ошибки одним ловишь кэтчем, как то нехорошо...или их там много но они все унаследованы от CantCreateTestException?
тут я согласился что можно просто 1 erorr на все кидать

Adel
06.09.2018
12:53:58
а какие другие случаи? если консоли вызывать, там ровно тоже самое.

Google

Артур Евгеньевич
06.09.2018
12:54:04
хотя возможно мобильщика и джсникам будет приятнее если они сомгут программно детектить текст ошибки
так консоль тоже представление
или я твой вопрсо неправильно понял

Adel
06.09.2018
12:54:45
так все кто эту команду будут юзать - это представление
это service layer

Артур Евгеньевич
06.09.2018
12:54:59
я думал ты предлагаешь просто сервис еррор кидать на глубине где то и пусть вспылвает типо

Adel
06.09.2018
12:55:40
не в глубине, а в логике. там где база упала - будут свои эксепшены.

Артур Евгеньевич
06.09.2018
12:56:02
логика в моем понимании и есть самая глубина)
т.к я так вижу мир

Adel
06.09.2018
12:56:55
ну давай допустим, что у нас нет отдельного доменного слоя пока. все действия делаются прямо в service layer
всегда когда я вижу фразу "Domain services" меня воротит :)

Артур Евгеньевич
06.09.2018
12:57:23
и при вспылтии ошибое из зеленого кружка, в другие норм их отлавливать и конвертирвоать в соответствии с неймингом нужного слоя
мне так кажется
ну посмотрим может еще кто выскажется

Ivan
06.09.2018
13:24:07
есть че почитать/посмотреть/повникать на тему
from procedure code to oop?
а то у меня неправильная маничка делать сначала классами в процедурном стиле, а потом переписывать.

Dmitriy
06.09.2018
13:26:46
начал читать Брайана Мейрса "Почувствуй класс", по описанию вроде то что тебе нужно

Ivan
06.09.2018
13:37:06
Eiffel. прикона

Sergey
06.09.2018
13:42:43

Google

Sergey
06.09.2018
13:43:02
мэйрс странный и мне его идеи больше процедурщину напоминают но пофигу
всеравно почитать его стоит
эванс унылый а не сложный
ну обычно не осиливают потому что скучно
программист-некрофил любил писать на ada

Dmitriy
06.09.2018
13:46:15

Sergey
06.09.2018
13:46:45
ну с идеями DbC ознакомиться стоит, конечно. Но не надо зацикливаться на мэйерсе. Это человек которого все цитируюют и никто не читал)

Артур Евгеньевич
06.09.2018
13:47:25
самая норм книжка по ооп для вхождения это от HeadFirst

Sergey
06.09.2018
13:47:27
половина принципов солид ему принадлежит если что. Боб даже не притворяется что сам выдумал

Dmitriy
06.09.2018
13:47:29

Артур Евгеньевич
06.09.2018
13:47:42
у них там 1 про паттерны а другая про проектирвоание но они пересекаются
после прочтения хоть чуть чуть понимашеь зачем это все надо

Sergey
06.09.2018
13:48:15
ммм.... чем ты можешь подкрепить свое утверждение? и какие еще книги ты читал (там где нет девчушки на облошке желательно)