Абасс... обсудите рахитекурту
Я не знаю что тут надо перетасовывать, но простота кода при моем подходе, как мне кажется, очевидна :)
И это всё, конечно, очень красиво. Но не жизнеспособно. Как только класс становится немножко сложнее и таскает пару десятков полей, случается ой. И дело даже не в том, что один метод валидации внезапно становится строк так 300, с этим можно бороться, а с тем, что при изменении одного параметра мы валидируем и 29 остальных. Хотя они не менялись. И понеслась. Метод начинают "оптимизировать". Типа - а если вот это так, то вот эту часть можно не проверять. И он превращается в такой клубок if-else что легче повеситься, чем разобраться.
А вот если валидировать после каждого изменения, то валидация остаётся простой. Поменялся А - я проверяю не стал ли он больше Д и не меньше 0.19 * Ф. И ускоряется.
Только вот в прошлом месяце поменяли такой "супер-валидатор" на валидацию после каждого изменения. Время исполнения одного загрузочного теста уменьшилось с 130 секунд до 28. За время выполнения теста валидация вызывалась примерно 200 тысяч раз.
ПС и теперь надо уговорить поменять валидатор для целого кластера "договор". Код вынесен в классы. Вызывается при каждом изменении (блядь!). В сумме примерно 6 тысяч строк. В гуях есть одна кнопочка, при нажатии на которую для одного договора валидация вызывается 3,5 тысяч раз. 40 секунд ждём реакции. По профайлеру из низ 39 проводим в валидаторах. Ужасные истории на ночь. (№;%:!"% привычно откликнулось эхо).