2019-08-26 Нельзя Использовать Механизм Ошибок Для Бизнес-Логики
Различия
Здесь показаны различия между двумя версиями данной страницы.
правила_разработки:как_не_надо_делать:2019-08-26_нельзя_использовать_механизм_ошибок_для_бизнес-логики [26.08.2019 05:12] nikolay_carbonsoft создано |
правила_разработки:как_не_надо_делать:2019-08-26_нельзя_использовать_механизм_ошибок_для_бизнес-логики [26.08.2019 05:27] (текущий) nikolay_carbonsoft Approved(nikolay_carbonsoft 2019/08/26 05:27) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | **Нарушено правило:** Программы пишутся для пользователей и программистов, а не для компьютера, все должно быть понятно для человека. | ||
+ | |||
+ | **Задача:** В тесте создания vm проверить, что нужные параметры в конфиге выставлены верно. | ||
+ | |||
+ | **Ошибка:** Сделал проверку с помощью кода: | ||
+ | <code bash> | ||
+ | cloudfox vm create ... | ||
+ | grep -q "^IP=192.168.1.1" ${VM_CONF} | ||
+ | grep -q "^NAME=test_vm" ${VM_CONF} | ||
+ | </code> | ||
+ | Здесь неявно используется функционал set -e (Exit immediately if a pipeline returns a non-zero status), который мы используем для контроля за ошибками выполнения команд внутри скриптов (если в конфиге опции нет, то grep упадет, тест тоже). | ||
+ | |||
+ | **Как надо делать:** | ||
+ | Так как проверка опций в конфиге - это основная бизнес-логика теста, мы должны описать это явно на языке bash (желательно с понятным логом): | ||
+ | <code bash> | ||
+ | cloudfox vm create ... | ||
+ | if ! grep -q "^IP=192.168.1.1" ${VM_CONF}; then | ||
+ | echo "В конфиге vm неверно указан сгенерировался IP">&2 | ||
+ | exit 1 | ||
+ | fi | ||
+ | if grep -q "^NAME=test_vm" ${VM_CONF}; then | ||
+ | echo "В конфиге vm неверно указан сгенерировался NAME">&2 | ||
+ | exit 1 | ||
+ | fi | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ~~OWNERAPPROVE~~ /*Не удаляйте эту строку и ниже!*/ | ||
+ | |||
+ | {(rater>id=1|name=Прочитал_правила_разработки:как_не_надо_делать:2019-08-26_нельзя_использовать_механизм_ошибок_для_бизнес-логики|type=vote|trace=user|tracedetails=1)} | ||
+ | |||