
Igor
21.03.2017
10:09:03

Paul
21.03.2017
10:09:08
Развиваешься только когда встречаешься с чем-то новым

Aleh
21.03.2017
10:10:48

Google

Ivan
21.03.2017
10:11:00
а кто то не переваривает си. а только жс

Aleh
21.03.2017
10:11:20
А какие в сишке интерфейсы? О.о

Ivan
21.03.2017
10:11:31
я с руби тоже толго мучался

Paul
21.03.2017
10:11:43
Ладно, очередной разговор ни о чём

Ilya
21.03.2017
10:12:18
Это не претензия, просто несколько неприятно ощущать себя снова тупым новичком

Paul
21.03.2017
10:13:03
В остальном код пишется так же

Igor
21.03.2017
10:14:56
Зачем делать синглтоны :/
Вот хороший вопрос я тоже иногда об этом думаю. На вскидку мне приходит идея с логированием и общими настройками для всего приложения.

Paul
21.03.2017
10:15:32
В самом приложении регистрируется уже конкретный логгер

Aleh
21.03.2017
10:16:21

Sergey
21.03.2017
10:19:15
если нужен синглтон значит что-то делаешь не так

Google

tony
21.03.2017
10:31:22
Синглтон нужен, кто бы чего не говорил. Для того же хранения неких настроек в небольших приложениях.
Вы конечно палками сейчас будете кидать и бить, но всё же)

Vlad
21.03.2017
10:33:53
Я пропустил, чем плох синглтон?

tony
21.03.2017
10:39:17
Ну как сказать плох. Просто его применять необходимо в нужном месте в нужное время.

Paul
21.03.2017
10:39:27

Vlad
21.03.2017
10:43:04
Не понял, какая связь между модулем и синглтоном?

Paul
21.03.2017
10:44:01
Если тебе нужен синглтон, то на самом деле тебе нужен модуль

Vlad
21.03.2017
10:44:14
Модуль же про инкапсуляцию, а синглтон про то, что всего один экземпляр. И уж какой интерфейс этот синглтон выставляет - наплевать.
Скрыть в модуле единое хранилище - да, оно будет похоже на синглтон, но все равно про другое паттерн...
Посыл понял

Paul
21.03.2017
10:44:41
Эм. Чтоа
Ты с синглтоном общаешься через его интерфейс, как и с модулем
Ты рассчитываешь на то, что это единый объект. Как и с модулем
Хер ты от него унаследуешься, лол. Как и с модулем

Vlad
21.03.2017
10:47:11
Я о том, что концептуально паттерны про разное, хотя и с подобной реализацией.

Paul
21.03.2017
10:47:29
Модуль не паттерн, а механизм языка
И там где его нет и нужны синглтоны (java, если что)

Vlad
21.03.2017
10:48:26
А, вот о чем речь.

Aleh
21.03.2017
11:21:21
Ну в общем да, синглтон эт костылек такой

Igor
21.03.2017
11:26:22
Зачем это делать синглтонами?
А почему нет? Эти вещи точно нужны в 1 единственном экземпляре причем они могут иметь свой внутренний стейт который может меняться в процессе работы приложения.

Google

Aleh
21.03.2017
11:33:54
И еще лучше, пускай от них мало кто зависит
Чем сложнее к ним достучаться тем лучше

Igor
21.03.2017
11:35:00

Aleh
21.03.2017
11:35:12
Да
И до конфигов

Igor
21.03.2017
11:36:50
я хотелбы покрыть логированием максимум кода поскольку логи очень сильно могут помочь при возникновении проблемы к примеру гдето далеко у клиента

Sergey
21.03.2017
11:38:09
Сервислокатор - форма DI
Вот его и надо юзать, вместо древнего стандартного синглтона

Aleh
21.03.2017
11:40:30
Сервис локатор это форма IoC

Aleh
21.03.2017
11:40:46

Sergey
21.03.2017
11:40:46
одно и тоже

Aleh
21.03.2017
11:41:07
Думаю, что плохой

Sergey
21.03.2017
11:41:16
Само собой не захордкоженый локатор, а нормальный гибкий локатор - для высокопроизводительных приложений не подходит

Igor
21.03.2017
11:42:10
Если передовать локатор в виде параметра конструктора оно смотрится както не очень

Sergey
21.03.2017
11:42:34
не обязательно передавать

Aleh
21.03.2017
11:42:46
Передавайте сразу нужнве зависимости, зачем локатор-то?

Sergey
21.03.2017
11:42:59
просто юзай как древний синглтон его

Google

Igor
21.03.2017
11:43:23
Тогда он от сингелтона не будет отличаться ))

Sergey
21.03.2017
11:47:01
будет за счет DI функционала

Igor
21.03.2017
11:55:58
https://ideone.com/obc4fz

Aleh
21.03.2017
11:57:54
Если у вас от чего-то зависит любой класс в системе, то вы проиграли)

Igor
21.03.2017
12:13:40

Aleh
21.03.2017
12:18:28
так я ж и говорю, что не надо пробрасывать, не надо каждому классу знать про логирование

Igor
21.03.2017
12:27:15

Admin
ERROR: S client not available

Aleh
21.03.2017
12:30:23
в контексте питона решение супер простое - модули, а вообще https://gist.github.com/mkusher/97f6ff29f73b536c5b7f31c6a3f407c2 ни B, ни C не знают ни про какой log и знать про него не должны

Paul
21.03.2017
12:30:51

Aleh
21.03.2017
12:32:54
есть декораторы, которые гоняют домен и могут логировать вокруг вызова, есть эффекты и евенты, на основе которых может быть лог

Paul
21.03.2017
12:33:43

Aleh
21.03.2017
12:33:48
пробрасывать не надо, если есть такая возможность и надо, если такой возможности нет
есть модули - не надо, нет модулей - надо)

Paul
21.03.2017
12:34:40
Рендерить хтмл это часть бизнес-процесса
И код описывает бизнес-логику

Aleh
21.03.2017
12:34:54
которая не находится среди домена

Google

Aleh
21.03.2017
12:34:58
а находится где-то в ui

Paul
21.03.2017
12:35:01
Логирование это средство инспектирования и к задаче отношения не имеет

Aleh
21.03.2017
12:35:39
может да, может нет

Paul
21.03.2017
12:35:42
То, что в логи в итоге будет попадать только нужные нам модули это понятно

Aleh
21.03.2017
12:36:43
окей, возьмем хаскель, где у нас есть что-нибудь хорошее, типа вычисления скидки, как ты будешь туда логи прокидывать?
а главное зачем?
а если мы хотим из одних модулей писать логи в базу с транзакциями, а в другом в stdout?

Paul
21.03.2017
12:38:36
Как бы есть подход и для чистых языков: когда возвращается всегда тип аля Result<T>, который на самом деле пара результат и строка (сообщене) и протаскивается через систему.
Вот только одна тонкость
Это нахуй не нужно никому
И знаешь почему?

Aleh
21.03.2017
12:39:24
ну конкретно с логами был бы Log a или Writer a String

Paul
21.03.2017
12:39:52
Поэтому хаскель и не станет мейнстримом

Aleh
21.03.2017
12:40:08
потому что нельзя логи пропихнуть туда, где им не место?)

Paul
21.03.2017
12:40:21
Потому что код должен выполнять конкретную бизнес задачу, либо быть утилитарным для кода, который будет выполнять бизнес задачу. И код это должен быстро писаться и быстро читаться. А для этого он должен быстро дебажиться. А для этого он должен быть обложен логированием, ассертами и так далее

Sergey
21.03.2017
12:41:43
а еще всякие штуки типа AOP профайлинга

Paul
21.03.2017
12:41:52
Подход с максимальным логгированием всего полезного — отлично зарекомендовавший себя подход, используемый везде, от всяких нод до хромиумов