@proRuby

Страница 1341 из 1594
Tim
08.08.2018
12:50:21
я считаю, что если есть внутренняя логика (исключая вызовы других классов и т.д.), которая не может зависеть только от полей этого класса, то этот класс не атомарный

Dan
08.08.2018
12:50:23
Атомарной можно считать чистую абстрактную функцию

Tim
08.08.2018
12:50:59
то есть в атомарном классе вся внутренняя логика зависит только от его полей

ты согласен с этим утверждением?

Google
Tim
08.08.2018
12:51:17
я на самом деле сам в нем на 100% не уверен, но всё же

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

(можно их менять, и тогда скорее всего будет пиздец полный. типа симуляции вызовов методов с параметрами – перед вызовом меняешь поле на другое)

то есть в атомарном классе вся внутренняя логика зависит только от его полей
хотя опять же кажется что не совсем то, но это самое близкое к тому, что я думаю

Максим
08.08.2018
12:58:44
Уже год не пишу по принципам ооп, брат жив
на функциональщину перешёл или есперимент такой? не боишься что уколит в итоге?

Anton
08.08.2018
12:59:12
ну, я его использую конечно, куда без него в руби

Максим
08.08.2018
12:59:23
Anton
08.08.2018
12:59:25
но не в бизнес логике

Максим
08.08.2018
12:59:34
просто процедурно всё делаешь или как?

Anton
08.08.2018
12:59:52
ну, я функциональные объекты использую и все

т.е. по сути у меня все через функции в функциях

Google
Anton
08.08.2018
13:00:08
и ооп в персистенс уровне и энтити

skynet
08.08.2018
13:17:27
proc / lambda

Так чтоли?)

Anton
08.08.2018
13:22:42
ну, можно просто class Something def call(payload) end end

Tim
08.08.2018
13:24:11
а в чем профит

Максим
08.08.2018
13:24:33
Anton
08.08.2018
13:24:39
в том, что изолированные объекты, которые по сути функции

Максим
08.08.2018
13:24:49
все сервисы у меня типа просто класс который можно каллнуть

и они что то делают

остальное всё приватное

Anton
08.08.2018
13:25:12
они без мутирующего стейта, от этого в них можно прокинуть зависимости + писать процедурный код в логике, что легче понимать чем паттерн на паттерне

Tim
08.08.2018
13:25:18
ну сервисы да, #perform

Anton
08.08.2018
13:25:29
ну и в тестах вместо объекта можно прок/лямбду прокинуть можно

Максим
08.08.2018
13:26:15
я вот почему то решил что у меня джобы это перформ

Tim
08.08.2018
13:26:16
ну и я сам склоняюсь к тому что иммутабельное лучше

Максим
08.08.2018
13:26:18
а сервисы это колл

Tim
08.08.2018
13:26:25
но не всегда возможное

Anton
08.08.2018
13:30:15
ну бтв я не слышал чтобы принципы ооп запрещали иммутабельность
так я и не говорил, что имутабельность != ооп

ну и я сам склоняюсь к тому что иммутабельное лучше
у меня выбора нет, если будет хоть какая-то мутация стейта во время работы сервиса - все по пизде полетит

Google
Tim
08.08.2018
13:31:36
так я и не говорил, что имутабельность != ооп
ну ты в целом противопоставляешь свой подход ооп, поэтому я так предположил

Anton
08.08.2018
13:31:40
Из за многопоточности?
не совсем, у меня загружаются все инстансы сервисов на старте приложения, а потом они переиспользуются из раза в раз

Tim
08.08.2018
13:32:19
ооп, вдохновлённое фп?

Anton
08.08.2018
13:32:23
Максим
08.08.2018
13:32:27
да

Anton
08.08.2018
13:32:30
ооп, вдохновлённое фп?
скорее наоборот

Максим
08.08.2018
13:32:30
это реал не ооп

Anton
08.08.2018
13:33:05
да вообще сложно сказать что где вдохновлялось, проблема в том, что чистый ооп не работает и чистый фп тоже, приходится миксовать

Максим
08.08.2018
13:33:17
вообще нравится подход к ооп как у бугаенко или как его там

Tim
08.08.2018
13:33:23
>чистый ооп не работает не верю

Максим
08.08.2018
13:33:24
читали его статьи?

Anton
08.08.2018
13:33:52
>чистый ооп не работает не верю
можешь не верить, у меня нет цели кого-то переубеждать ?

Tim
08.08.2018
13:33:53
ну в общем именно он поменял мое мышление об ооп и всем таком

открыл глаза так сказатб

Anton
08.08.2018
13:34:02
поэтому я и сказал, что жду когда ты разочаруешься

Google
Tim
08.08.2018
13:34:15
)

Anton
08.08.2018
13:34:23
да вообще сложно сказать что где вдохновлялось, проблема в том, что чистый ооп не работает и чистый фп тоже, приходится миксовать
ну и как пример, вот кусок кода, это не ооп и не фп, это какая-то каша https://github.com/davydovanton/cookie_box/blob/master/lib/decks/operations/create.rb#L16-L19

Максим
08.08.2018
13:35:07
типа блин иногда читаешь его

и вроед те вещи к которым привык он обсирает

и ты такой типа

блин а ведь он прав

хелперы это не ооп

какого хуя

Tim
08.08.2018
13:35:30
++

Admin
ERROR: S client not available

Anton
08.08.2018
13:35:36
хелперы это не ооп
это модули, а модули это не ооп

Tim
08.08.2018
13:35:43
геттеры и сеттеры инкапсуляцию нарушают

Максим
08.08.2018
13:35:54
пиздец

и место женщины на кухне!

Tim
08.08.2018
13:36:07
))

Максим
08.08.2018
13:36:12
ну это шутка конечно же он не это совсем имел ввиду

Tim
08.08.2018
13:36:28
я уже не помню чтобы он такое говорил

rekero
08.08.2018
13:36:51
Dmitriy
08.08.2018
13:37:04
т.е. это что-то в духе SERVICE = Service.new(deps) SERVICE.call(payload) SERVICE.call(payload) SERVICE.call(payload)
а почему не создается каждый раз экземпляр класса? SERVICE.new(deps).call(payload) SERVICE.new(deps)..call(payload) SERVICE.new(deps).call(payload) Чем оправдан твой подход переиспользовать экземпляр несколько раз? учитывая что появляется потенциальная проблема мутабельности стейта

Максим
08.08.2018
13:37:09
собсно там я с ним и познакомился

Google
rekero
08.08.2018
13:37:15
вяло говном поперекидывались несколько дней

Anton
08.08.2018
13:37:23
по сути, это просто кеширование, что бы из раза в раз не делать объект

от сюда проблема мутабельности, но при этом я еще ни разу не видел, что бы это мешало

Dmitry
08.08.2018
13:38:11
+++

Anton
08.08.2018
13:38:13
зато давно не видел проблем в духе “бля, у меня тут поменялось что-то но я хз где и что"

Roman
08.08.2018
13:38:41
или "у меня тут в дев все норм, а в проде почемуто перетирается"

Anton
08.08.2018
13:38:54
не, такого тоже нет

ну короче, сложнее писать код, но проблем меньше

+ эту ошибку дурака не обойти ибо все просто развалится

Dmitriy
08.08.2018
13:40:27
мне кажется, нужно постараться, чтобы стейт переписать. Если конечно переменные класса не использовать

Alexander
08.08.2018
13:40:43
Anton
08.08.2018
13:40:49
вот все зависимости https://github.com/davydovanton/cookie_box/blob/master/lib/decks/operations/create.rb#L8

репозиторий для работы с данными + слаг генератор

который что-то там делает (не важно что, главное интерфейс и результат)

Максим
08.08.2018
13:41:31
если честно так и не понял что такое слаг

Alexander
08.08.2018
13:43:06
вот все зависимости https://github.com/davydovanton/cookie_box/blob/master/lib/decks/operations/create.rb#L8
а в каком месте происзодит create=Create.new(params) ? как я понял у тебя такой подход

Anton
08.08.2018
13:43:23
а в каком месте происзодит create=Create.new(params) ? как я понял у тебя такой подход
у меня IoC контейнер используется. на старте приложения он регестрирует все зависисмости с их зависимостями и собирается

если что-то не то идет, то все упадет на момент старта

Максим
08.08.2018
13:44:23
ну то что это хьюман ридабл название чего то

Страница 1341 из 1594