|
![]() |
#1 |
Участник
|
Я что-то не понимаю пафоса. А где здесь криминал?
validateWrite() нужна в том случае, если нет уверенности в корректности заполнения полей. Обычно это происходит в случае, если поля заполняются пользователем. Он вполне может забыть что-то указать или указать не корректно А здесь-то совсем другой случай. Все ключевые поля заполнены. Ну, и зачем "лишние" проверки? Нет, я понимаю, что если выполняется кастомизация и в validateWrite() добавили некую проверку, которую ожидали при любом добавлении записи. То, да, такой код - это "сюрприз". Но, при чем здесь Best Practices? Это проблемы разработичка или консультанта/тестера. Смотря кто пропустил такую ситуацию. Вы же не настаиваете на выполнение validateField() для каждого поля, хотя там тоже много чего можно изменить. Или тоже необходимо? ![]()
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#2 |
Участник
|
Цитата:
Я для такого обычно использую следующий метод X++: public static void validateWriteRecordCheck(Common _record) { if (! _record.validateWrite()) { throw error(strFmt("Failed to write %1 table", tableId2pname(_record.TableId))); } } |
|
![]() |
#3 |
Участник
|
Именно потому, что это программное создание строки без участия пользователя. Т.е. здесь нет "внешних" данных, которые мог бы подготовить пользователь и в которых могла бы вкрасться ошибка. Все данные готовит разработчик. И, естественно, они должны быть корректными. У Вас это в релиз не пройдет, если что-то не заполнено. Ну, это все-равно, что проверять тип переданного в метод параметра, при том, что он указан явно в EDT. А вдруг не то передали?
![]() Ну, представим, что добавили validateWrite() и он вернул false. Что в этой ситуации может сделать пользователь? Да ничего! Запись же программно создается. Получаем "мертвый" код, который вообще не может быть использован. Нет, я понимаю, почему хочется поставить validateWrite(). Сам иногда это делаю. А вдруг?!. Но в данном конкретном случае - это явный over-programming. Не вижу никакого криминала, если в описанном сценарии этой проверки нет
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#4 |
Участник
|
Почему ничего - он зарепортит ошибку. Ошибочная запись создана не будет. Могут кстати и не только добавить validateWrite, но и добавить обязательное поле, которое тут не заполняется
|
|
![]() |
#5 |
Участник
|
Цитата:
![]()
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от trud
![]() Откуда вы знаете что все ключевые поля заполнены? Для этого и нужен validateWrite, который собственно это проверит.
Я для такого обычно использую следующий метод X++: public static void validateWriteRecordCheck(Common _record) { if (! _record.validateWrite()) { throw error(strFmt("Failed to write %1 table", tableId2pname(_record.TableId))); } } ![]()
__________________
Felix nihil admirari |
|
![]() |
#7 |
Участник
|
согласно рекомендациям, с коими я согласен, фраза должна строиться от противного:
validateWrite() не нужна лишь в том случае, если...
__________________
Felix nihil admirari |
|
![]() |
#8 |
Участник
|
Хорошо. В данном случае она нужна? Почему?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#9 |
Участник
|
именно о том и был мой исходный пафос, что рассуждать мы (девы) должны так:
в данном случае она НЕ НУЖНА, ПОТОМУ ЧТО а в большинстве случаев мы ставим валидацию перед записью. comme il faut, о котором ещё пушкин а.с. писал нам из прошлого в будущее
__________________
Felix nihil admirari |
|
Теги |
holywar |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|