Size: a a a

Software Design/Architecture/Zen

2020 October 07

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
The Ant 🐜
@vudaltsov посмотрел видео по рефакторингу уии пакета валидации. Там был момент, когда вы сказали что-то типа "надо стремится использовать иммутабельность везде". У меня вопрос, а так ли это актуально в пхп? Пых однопоточный, асинхронщины нет, параллельно никто поменять стейт не сможет. В чем тогда смысл?
Однопоточность не отменяет плохо написанного кода, когда объект создался в одном месте, поменялся (мутировался) совершенно в другом (например, обсёрвер), а в третьем месте - месте использования мы не можем понять, кто и где его мутировал...
источник

T🐜

The Ant 🐜 in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Однопоточность не отменяет плохо написанного кода, когда объект создался в одном месте, поменялся (мутировался) совершенно в другом (например, обсёрвер), а в третьем месте - месте использования мы не можем понять, кто и где его мутировал...
что поменяется в такой ситуации при создании нового объекта?
источник

T🐜

The Ant 🐜 in Software Design/Architecture/Zen
Нам нужно изменение данных, которые хранит в себе объект. Мы это делаем. Будет ли это создание нового объекта или мутирование существующего уже не важно.
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
The Ant 🐜
что поменяется в такой ситуации при создании нового объекта?
Ожидания поменяются
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
The Ant 🐜
Нам нужно изменение данных, которые хранит в себе объект. Мы это делаем. Будет ли это создание нового объекта или мутирование существующего уже не важно.
в том месте в котром вы с ним УЖЕ рабоатете будет пофиг если кто то себе создаст новый обект

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

МФ

Максим Федоров... in Software Design/Architecture/Zen
The Ant 🐜
что поменяется в такой ситуации при создании нового объекта?
у вас есть Value Object, как понять — это тот же или не тот же, как понять что значение тоже самое, если объект тот же? 🙂 например маппинг в ORM сделать
источник

Р

Руслан in Software Design/Architecture/Zen
Максим Федоров
у вас есть Value Object, как понять — это тот же или не тот же, как понять что значение тоже самое, если объект тот же? 🙂 например маппинг в ORM сделать
ЗачЭм понимать, создал новый и все
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
The Ant 🐜
@vudaltsov посмотрел видео по рефакторингу уии пакета валидации. Там был момент, когда вы сказали что-то типа "надо стремится использовать иммутабельность везде". У меня вопрос, а так ли это актуально в пхп? Пых однопоточный, асинхронщины нет, параллельно никто поменять стейт не сможет. В чем тогда смысл?
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
The Ant 🐜
@vudaltsov посмотрел видео по рефакторингу уии пакета валидации. Там был момент, когда вы сказали что-то типа "надо стремится использовать иммутабельность везде". У меня вопрос, а так ли это актуально в пхп? Пых однопоточный, асинхронщины нет, параллельно никто поменять стейт не сможет. В чем тогда смысл?
Неограниченное количество мест для изменения
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
The Ant 🐜
Нам нужно изменение данных, которые хранит в себе объект. Мы это делаем. Будет ли это создание нового объекта или мутирование существующего уже не важно.
Явное лучше неявного - всегда будет понятно, откуда пришли данные (новые или не изменённые)
источник

E

Evgen in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Явное лучше неявного - всегда будет понятно, откуда пришли данные (новые или не изменённые)
откуда - извне. точно так же как с мутирующими объектами так и без них. данные кто-то где-то поменял и передал их на вход
источник

Д

Дмитрий in Software Design/Architecture/Zen
вот всегда так. четкого ответа - почему все иммутабельным делать - никто дать не может. расплывчатые фразы какие-то. что где-то этот объект мутирует.
источник

Д

Дмитрий in Software Design/Architecture/Zen
уже раз 10 натыкался на подобные дискуссии
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Evgen
откуда - извне. точно так же как с мутирующими объектами так и без них. данные кто-то где-то поменял и передал их на вход
Тот кто "передал" несёт ответственность за то, что именно он передаёт. А как он может эту ответственность нести, если эти данные внутри будут мутироваться (неявное изменение)?
источник

E

Evgen in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Тот кто "передал" несёт ответственность за то, что именно он передаёт. А как он может эту ответственность нести, если эти данные внутри будут мутироваться (неявное изменение)?
да какая разница - тебе дали готовый объект - работай с ним. То что было до тебя - это было до тебя (мутировали или не мутировали не имеет значения)
источник

Д

Дмитрий in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Тот кто "передал" несёт ответственность за то, что именно он передаёт. А как он может эту ответственность нести, если эти данные внутри будут мутироваться (неявное изменение)?
как-будто я объект передаю на рынок, где он проходит через каждую палатку, и там его "мутируют".
источник

Д

Дмитрий in Software Design/Architecture/Zen
все кому не лень
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Дмитрий
вот всегда так. четкого ответа - почему все иммутабельным делать - никто дать не может. расплывчатые фразы какие-то. что где-то этот объект мутирует.
что тут понимать.
мутабельность -- это значит  fun foo(value: MutableValue) { value.bla = "secret" }
и такого говна должно быть как много меньше.
источник

E

Evgen in Software Design/Architecture/Zen
Anton Lakotka
что тут понимать.
мутабельность -- это значит  fun foo(value: MutableValue) { value.bla = "secret" }
и такого говна должно быть как много меньше.
почему же? Или это неоспоримое утверждение?
источник

E

Evgen in Software Design/Architecture/Zen
самый большой недостаток мутации - это тяжело отслеживать путь изменения данных
источник