Подарки от программис'тов
Почему ещё при её создании она не валидируется на длину?
----
А как?
Ну создали стринг... проверили - все Ок.
Ну добавили что-то полученное где-то... строку в процессе 5 раз пересоздали...
Будем проверять? Или ну его нах... в смысле нарушать инкапсуляцию нах...
Ну согласен. Или городить свой класс строк, которые бы имели встроенное ограничение (пусть задаваемое).
Но с этим ладно. А вот как сделать, чтобы к валидирующим значениям (типа макс. длина, границы чисел) можно было легко иметь доступ в любом месте приложения? В том числе в БД. Эти магические числа (string <= 20) в разных частях приложения - явно не то.
Похоже, нужна генерация. Где-то хранить данные по валидации, затем по ним генерировать таблицы БД (подгоняя туда ограничения по длинам, диапазонам и прочему), затем по ним же генерировать атрибуты для классов (которые тоже в свою очередь генерировать). Если без генерации, то минимум для каждой технологии придётся иметь хранилище валидирующих данных. Т.е. написал БД, затем пишешь модель на языке программирования, а валидацию в тех же атрибутах - просто копируешь из данных БД руками.