![]() |
#2 |
Administrator
|
Поскольку вопрос чисто предпочтений, то я (лично для себя) выработал следующие правила (при условии, что нет правил, установленных используемыми фреймворками):
Методы check* отвечают за одну проверку. Методы validate* отвечают за комплекс проверок (т.е. грубо говоря состоят из вызовов методов check*). При этом комплексов может быть много и они могут состоять из разного набора проверок (аналог привилегий и Duty в 2012). Я люблю делать проверочные методы методами объекта (а не статическими), чтобы иметь возможность обращаться к глобальным переменных классам или внутренним private-методам Сообщения, исключения, диалоговые окна - это все регулируется параметрами методов в зависимости от потребности (например, иногда вместо инфолога надо писать в таблицу текст ошибки). Ну и собственно все. Пример (абстрактный). Хочу написать алгоритм разноски для своей условной заявки на покупку. Разноска генерит проводку в ГК и приходную проводку в InventTrans. У меня будет: 1) проверка на открытость периода в ГК 2) проверка на открытость периода по складу (ValueOpen = Да) 3) проверка на наличие товара по необходимым аналитикам 4) проверка на наличие бюджета ... какие-то другие проверки. По бизнесу (к примеру) сначала выполняется проверка на наличие товара. Если он есть, то закупка не выполняется. Если товара нет, то выполняется проверка на наличие бюджета. После успешной проверки бюджета - выполняется разноска по складу и ГК. Я хочу сделать (условно) 4 метода check*, которые в свою очередь будут вызываться в разное время, причем они также могут быть вызваны пользователем по кнопке "Проверить" или "Предварительный просмотр проводок". При этом у меня будут методы validate*, которые будут вызывать эти методы check*: 1) validate на этапе проверки наличия товара 2) validate на этапе проверки бюджета 3) validate на этапе разноски Соответственно - наполнение этих validate-методов может быть разным, при этом, к примеру, проверку на открытость периода я могу вызывать в каждом validate-методе, но сама логика проверки у меня будет в едином методе check
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 08.08.2021 в 14:46. |
|
|
За это сообщение автора поблагодарили: mazzy (5), NetBus (3), dech (5). |