Size: a a a

2020 August 01

АС

Альберт Степанцев... in PHP
Vlad Sobenko
Я сделаю ValueObject для оценки(от 1 до 5), покрою тестами. Создам агрегат для оценки домашней работы. Покрою его тестами. Потом подберу типы данных под проперти. Будет tinyint. Сгенерится структура. Готово
потом к вашей БД подключается пионер, который плевал на ваш код и устанавливает у поля значение 100
источник

АС

Альберт Степанцев... in PHP
не говоря уж о том, что в нормальных БД нет никакого tinyint
источник

AC

A C in PHP
ну так-то и с бд никаких проблем нарукожопить нет, плохой пример
источник

VS

Vlad Sobenko in PHP
Альберт Степанцев
потом к вашей БД подключается пионер, который плевал на ваш код и устанавливает у поля значение 100
Ну это уже параноя) Но, как знаете, вам виднее)
источник

АС

Альберт Степанцев... in PHP
Vlad Sobenko
Я сделаю ValueObject для оценки(от 1 до 5), покрою тестами. Создам агрегат для оценки домашней работы. Покрою его тестами. Потом подберу типы данных под проперти. Будет tinyint. Сгенерится структура. Готово
давайте я вам задам ключевой вопрос
ответьте, пожалуйста, максимально честно

чем
int CHECK (1 <= value AND value <= 5)
вместо
int
противоречит вашей концепции и мешает вашим ValueObjects?
источник

АС

Альберт Степанцев... in PHP
только без деклараций ответьте
по-чесноку
источник

VS

Vlad Sobenko in PHP
Альберт Степанцев
давайте я вам задам ключевой вопрос
ответьте, пожалуйста, максимально честно

чем
int CHECK (1 <= value AND value <= 5)
вместо
int
противоречит вашей концепции и мешает вашим ValueObjects?
Ничем не перечит. Но я программирую на php, пусть все бизнес ограничения там будут, это даже, как документация. Дублировать эти ограничения в бд не вижу смысла.
источник

SM

Sergey Milimko in PHP
Альберт Степанцев
DDD идет следующим слоем
вам никто не мешает использовать сущности и агрегаты в коде приложения, предварительно на слое БД наложив ограничения на данные
Я про пример. Если от пхп требуется только чтение или запись, то значит логика реализована внутри базы. А это не ddd.
источник

АС

Альберт Степанцев... in PHP
Vlad Sobenko
Ну это уже параноя) Но, как знаете, вам виднее)
вы работали в ситуации, когда в одну базу смотрят десяток приложений, которые пилят два десятка команд, половина на аутсорсе?
источник

VS

Vlad Sobenko in PHP
Альберт Степанцев
вы работали в ситуации, когда в одну базу смотрят десяток приложений, которые пилят два десятка команд, половина на аутсорсе?
Нет.
источник

АС

Альберт Степанцев... in PHP
я вам завидую ))
источник

АС

Альберт Степанцев... in PHP
у вас в голове всё красиво, разложено по полочкам и вы во всём уверены
источник

АС

Альберт Степанцев... in PHP
я был таким же лет 10 назад
источник

AC

A C in PHP
Альберт Степанцев
вы работали в ситуации, когда в одну базу смотрят десяток приложений, которые пилят два десятка команд, половина на аутсорсе?
так это явный пример плохой архитектуры, не?
источник

Р

Руслан in PHP
Альберт Степанцев
вы работали в ситуации, когда в одну базу смотрят десяток приложений, которые пилят два десятка команд, половина на аутсорсе?
Вырвать руки, вставить спички архитектору
источник

VS

Vlad Sobenko in PHP
Альберт Степанцев
вы работали в ситуации, когда в одну базу смотрят десяток приложений, которые пилят два десятка команд, половина на аутсорсе?
В этой ситуации ваш подход оправдан.
источник

АС

Альберт Степанцев... in PHP
Sergey Milimko
Я про пример. Если от пхп требуется только чтение или запись, то значит логика реализована внутри базы. А это не ddd.
вы говорите лозунгами
я выше приводил уже пример
int CHECK (1 <= value AND value <= 5)

это плохо?
источник

АС

Альберт Степанцев... in PHP
A C
так это явный пример плохой архитектуры, не?
Нет. Это явный пример реальных промышленных приложений.
источник

АС

Альберт Степанцев... in PHP
А не бложиков на три странички
источник

SN

Sergey Nikitchenko in PHP
Альберт Степанцев
вы говорите лозунгами
я выше приводил уже пример
int CHECK (1 <= value AND value <= 5)

это плохо?
На самом деле зависит от задачи и проекта, если ни в коем случае нельзя допустить кривых данных (по бизнес-логике) в бд - тогда можно задублировать валидацию в типе. А для 99% проектов кейс про пионера не повод дублировать. При переходе на 10 бальную систему придется в двух местах менять :)
источник