@oop_ru

Страница 740 из 785
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
а так в логах посмотрели что за экспшн, перешли в класс, посморели какими он данными оперирует, откуда еще может быть вызван

эти вещи даже в лог не идут. по крайней мере в моих проектах.
тогда есть хороший вариант: catch (Throwable $e) { ; }

)))

и это... ты сейчас говоришь с человеком, создававшим класс эксепшена на каждый чих :)
да мне тоже иногда кажется нахую вся эти di,композиции интерфейсы, можно было бы просто в процедуру все захйячить со статичными методами и было бы все наглядно и понятно))

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
ну смотри. давай допустим что пост нельзя запаблишить если у него текст пустой и если он уже запаблишен. это как бы разные ошибки, но это клиентские ошибки. приложению вообще по барабану почему не получилось, оно просто покажет текст ошибки юзеру и забудет о нем...

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

Артур Евгеньевич
06.09.2018
12:43:52
но на уровне бизнесс логики это разные события

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

Adel
06.09.2018
12:45:58
Если база данных отвалится то у тебя какой эксепшн будет последним?
стоит ли оборачивать любые ошибки в другой эксепшен - это вопрос, который я хотел задать следующим :)

намучался с ним в свое время

хотя все это кроме порно - это ошибки авторизации. не совсем логика.

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

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

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

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

Артур Евгеньевич
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
и при вспылтии ошибое из зеленого кружка, в другие норм их отлавливать и конвертирвоать в соответствии с неймингом нужного слоя

ну давай допустим, что у нас нет отдельного доменного слоя пока. все действия делаются прямо в service layer
ну упрощения архитектуру здесь играют на твою позицию)) но допустим...тогда нам все равно нужно разделить экпшн приложения(сервисов) от ошибок пользователю, чтобы инкапсулирвоать поведение и состояние ситемы. Т.е чтобы пользователь не видел `column user not found' а видел сообщение что база пока недоступна

мне так кажется

ну посмотрим может еще кто выскажется

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. прикона

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

всеравно почитать его стоит

эванс унылый а не сложный

ну обычно не осиливают потому что скучно

программист-некрофил любил писать на ada

Dmitriy
06.09.2018
13:46:15
я бы гради бутча порекомендовал)
да, лежит в отложеных на чтение) а Брайан типа автор eiffel и программирования на публичных контрактах (как написано в книге)

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

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

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

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

после прочтения хоть чуть чуть понимашеь зачем это все надо

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

Страница 740 из 785