melodyn
@melodyn
Лучше нативная смерть, чем фреймворковая жизнь.

Что я в итоге реализовал?

Ох, страшно мне это публиковать, но я надеюсь, что вы мне поможете :D

В общем, у меня появилась задача по созданию таблицы и наполнению её контентом (не html), у таблицы есть некоторые ограничения по ширине колонок и параметрам самой таблицы, но нет ничего такого, что пользователь мог бы сломать. При этом он может попытаться установить некорректные данные.

Вместо того, чтобы ругаться ошибками на некорректность, я решил реализовать понятие "синоним", которое переводит некорректные данные в усреднённый вариант из готового набора дефолтных значений и лимитов и устанавливает его.

Чтобы максимально просто описать суть и реализацию я сделал пример немного в другом ключе и разместил его здесь: https://github.com/Melodyn/Synonyms (Осторожно, PHP)

Вопрос в том, что, возможно, уже есть некий паттерн проектирования (или их комбинация), которая решает мою задачу гораздо лучше и чище. Мне бы хотелось услышать в ответах:
1. Чем можно заменить мою портянку из известного миру (не библиотеки, а именно какие-то паттерны, бест практикс или т.п.);
2. Насколько люто выглядит со стороны то, что я родил?
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
melodyn
@melodyn Автор вопроса
Лучше нативная смерть, чем фреймворковая жизнь.
Нет ответа
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
gromdron
@gromdron
Работаю с Bitrix24
Эм... есть несколько вопросов по Вашему "чуду".
Отбросив велосипедизм и костылестроение есть пара вопросов по логике работы.

То что у Вас есть константа MAX_AGE_IN_YEARS (кстати почемы бы просто не спрашивать дату рождения?) это ок (смущает конечно _IN_YEARS, но да ладно), то что у Вас 3 пола это тоже допустимо (по крайней мере в нашей адекватной России), то что у Вас есть допустимый ростовой диапазон тоже, но во чего я точно не могу понять, так это блин STATUSES.

Почему бы не сделать 2 "статуса" (на самом деле эт о скорее "признак жизни субьекта") - DEAD или ALIVE, то есть живой или не живой.
child, adult, old и т.п. можно получить при помощи отдельного метода исходя из возраста обьекта (ведь они же зависят от возраста, а не от каких либо правил).
"Статусы" buried и cremated это не статусы, а виды погребения.

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

Почему бы не описать это при помощи сеттеров (т.е. в момент установки параметра, проверять его ошибки)? Почему бы не разделить это все на части и не хранить отдельно?
Ответ написан
qonand
@qonand
Software Engineer
Вы уж меня извините, может я чего-то не понимаю... но сам паттерн ПРОЕКТИРОВАНИЯ где?
Ок, у Вас есть конкретная задача и Вы ее решили - прекрасно. Но это не паттерн - это лишь один из вариантов решения ВАШЕЙ конкретной задачи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы