@oop_ru

Страница 158 из 785
Paul
21.03.2017
12:43:40
А значит и влиять на интерфейс не должны.

Aleh
21.03.2017
12:44:30
Ну давай, расскажи мне сказки про то, что ты быстрее найдёшь багу в модуле без логирования, чем с логированием
оч сомнительно в доменной логике, что логи как-то помогут. В инфтраструктуре само собой

поможет только адекватный набор тестов и понятный тест для текущего бага

5 строк и у меня есть падающий тест, который запускается и отрабатывает моментально

Google
Aleh
21.03.2017
12:45:05
я быстро нахожу багу

Paul
21.03.2017
12:45:05
оч сомнительно в доменной логике, что логи как-то помогут. В инфтраструктуре само собой
Логи эти будут, когда ты отдельно запускать модуль будешь где бага с полным логгированием

В проде ясен пень логируются только доменные модули

Aleh
21.03.2017
12:45:53
для найденных

и понятный кейс для текущего, чтобы тест добавить

Igor
21.03.2017
12:49:46
Aleh
21.03.2017
12:51:08
модули?

Paul
21.03.2017
12:51:16
_log

Ещё и явное прокидывание

Отношение агрегирования между доменным классом и логгером

Это фулл пиздейшн

Google
Paul
21.03.2017
12:52:24
Даже представить себе не могу что-то уровня хромиума с таким подходом

Чтобы какой-нибудь аллокатор затрейсить

Aleh
21.03.2017
12:53:25
ничего не понял)

Paul
21.03.2017
12:55:54
Всегда поражала в людях вот эта способность всё доводить до абсурда. Когда "у нас всё point free" и пишут const props = flip(uncurry(2, compose(map, flip(uncurry(2, get))))) вместо const props = (keys, obj) => map(keys, k => get(k, obj)).

Или когда вот во имя чистоты логгер начинают с верхних уровней вот так прокидывать.

Больные

Sergey
21.03.2017
12:57:16
логгер обычно через сеттер прокидываю, а в конструкторе создаю заглушку в виде NullLogger. ну а на джаве как обычно, через статик

Paul
21.03.2017
12:57:36
Ещё один

Странно, что вы Array всякие не прокидываете

Paul
21.03.2017
12:59:33
как так и как надо?
Как надо уже обговорили: логгер — модуль, которым пользуются все кто хочет, используя лишь интерфейс. Приложение же устанавливает уже реализацию логгера, через который всё и идёт. И тут уже полный контроль: какой модуль пользовался, что передал, с каким уровнем и когда.

Aleh
21.03.2017
12:59:56
а, боже надо было import делать в питоне? Ну очевидно да

Sergey
21.03.2017
13:00:05
ну так приложение и пихает нужный логгер

хочет не пихает

Aleh
21.03.2017
13:00:26
A B C - модули

Sergey
21.03.2017
13:00:35
ну и плюс логгеры это часть контейнера, ибо могут юзать всякие редисы и конфиги

Aleh
21.03.2017
13:00:36
я показал, что B и С не должны знать про логгер

Paul
21.03.2017
13:00:43
или пример саркастический был?

Aleh
21.03.2017
13:00:52
исходный видел?

Google
Paul
21.03.2017
13:01:09
Видел где было C(B(A(log))) или что-то вроде

Aleh
21.03.2017
13:01:17
изначально было C(log)

Paul
21.03.2017
13:01:25
А должно быть C()

Aleh
21.03.2017
13:01:25
он в себе уже в B, а тот в A

Отношение агрегирования между доменным классом и логгером
если бы A делал import, то какое отношение было бы между классами?

Paul
21.03.2017
13:06:22
Делал бы не класс, а модуль, в котором он содержится

Aleh
21.03.2017
13:06:34
т.е. А не зависел бы от лога?)

Paul
21.03.2017
13:06:57
С точки зрения бизнес логики лога нет

Поскольку функция утилитарна, связь вообще отмечаться не будет, это бесполезная информация

Aleh
21.03.2017
13:07:06
что значит бизнес-логика лога?

Paul
21.03.2017
13:07:21
Не лога, а приложения

Слушай, а ты серьёзно вот так пишешь?

Paul
21.03.2017
13:08:37
С прокидыванием логгера? В продовском коде, разумеется.

Aleh
21.03.2017
13:08:39
я не логирую ничего в домене

Paul
21.03.2017
13:09:07
Я не говорю о том, что попадает в логи

Aleh
21.03.2017
13:09:21
нет, я от слова совсем, нет никакого log()

есть ивенты, на основе которых модель строится

команды на основе которых действия запускаются

Paul
21.03.2017
13:09:47
Эм, давай более приземлённо

Aleh
21.03.2017
13:09:52
вот они попадают в логи

Google
Paul
21.03.2017
13:10:32
Скажем, вот задача: есть запрос с клиента, в ходе обработки делается ещё 100500 запросов, могут быть вложенные, потом всё дело формируется, шаблонизируется и отдаётся клиенту

Aleh
21.03.2017
13:10:54
а домен какой?)

Paul
21.03.2017
13:11:10
Абсолютно неважно

Обычный сервер

Aleh
21.03.2017
13:11:23
суть в том, что мне важен домен

а инфраструктура ляжет потом как будет удобно

Paul
21.03.2017
13:11:37
Нужно: иметь трассировку запросов (какие когда выполнялись в ходе обработки запроса от клиента, сколько времени ушло, какие ответы), логирование ошибок с разных уровней, логирование времени шаблонизации

Вот давай на этом примере

Admin
ERROR: S client not available

Paul
21.03.2017
13:12:04
а инфраструктура ляжет потом как будет удобно
С каких пор инфраструктура влияет на код?

У нас разное определение инфраструктуры?

Aleh
21.03.2017
13:12:15
инфраструктура это часть кода

запросы в базу - инфраструктура

логирование - инфраструктура

Paul
21.03.2017
13:12:27
Значит и вызов log() инфраструктуру

Aleh
21.03.2017
13:12:29
io - инфраструктура короч

Paul
21.03.2017
13:12:30
Ну и отлично

Aleh
21.03.2017
13:12:36
а домен - расчет скидки

Paul
21.03.2017
13:12:39
Это очень странное определение

Aleh
21.03.2017
13:12:43
определение диагноза пациенту

Google
Paul
21.03.2017
13:12:45
Скажем так, ты единственный кто так считает

ну да ладно, плевать

Не-не, подожди

Я уже пример привёл

Он довольно прост: обычный сервер

Aleh
21.03.2017
13:13:06
@fes0r @Enleur расскажите про ваше видение инфраструктуры :)

Sergey
21.03.2017
13:14:11
@fes0r @Enleur расскажите про ваше видение инфраструктуры :)
мне иногда кажется что у меня все приложение состоит из инфраструктуры

Paul
21.03.2017
13:14:38
С таким определением-то конечно

Aleh
21.03.2017
13:15:02
Как ты предлагаешь это решать?
да как написано, так и решать

надо логировать - логирую

Paul
21.03.2017
13:17:20
Прокидываешь сверху вниз логгер?

Aleh
21.03.2017
13:17:46
в жаве\пыхе это сделает за меня контейнер

Sergey
21.03.2017
13:18:30
в жаве у тебя логгер статический будет

если какой-нибудь slf4j

Aleh
21.03.2017
13:18:57
и завернут в адаптер)

Sergey
21.03.2017
13:19:56
ООП не нужен. Только ПКБ. Нашли о чем спорить

Paul
21.03.2017
13:20:10
ПКБ?

Aleh
21.03.2017
13:20:30
да, что такое пкб?

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