Польза ДРАКОНа особенно очевидна в тех алгоритмах, где задаётся несколько вопросов.
Алгоритм со многими вопросами соответствует программе с вложенными конструкциями
if.
Если в алгоритме есть хотя бы одна конструкция
if, то, скорее всего,
ДРАКОН сделает алгоритм легче для понимания.
Если в алгоритме есть две или более конструкции
if, то преимущества ДРАКОНа несомненны.
Возможность пальцем (взглядом) проследить
все пути через алгоритм дорогого стоит.
Рассмотрим пример из реальной жизни.
Вот алгоритм InputBox_ok из исходного кода drakon.tech.
Этот алгоритм описывает реакцию на нажатие кнопки Ok диалога ввода текста.
Если в диалоге задана процедура проверки ввода (dialog.check), то эту процедуру следует запустить.
В случае, если процедура проверки вернула непустое сообщение (message), это означает, что обнаружена ошибка,
о которой надо сообщить пользователю.
Иначе следует послать введённое сообщение процессу, который создал диалог, и уничтожить диалог.
Вот ДРАКОН-схема:
Вложение:
20190920135601.png [ 137.24 КБ | Просмотров: 12003 ]
А вот эквивалентный ей код:
Код:
function InputBox_ok() {
var dialog, message, value;
dialog = module.dialog
value = dialog.input.value
if (dialog.check) {
message = dialog.check(value)
if (message) {
InputBox_showError(dialog, message)
} else {
sm.sendMessage(
dialog.scenario,
"onResult",
{text: value}
)
destroyPopup()
}
} else {
sm.sendMessage(
dialog.scenario,
"onResult",
{text: value}
)
destroyPopup()
}
}
Главная проблема текстового представления - найти следующий шаг алгоритма при выходе из нескольких вложенных блоков.
В данном примере нужно поработать глазами, чтобы найти следующий шаг после первого destroyPopup().
ДРАКОН же выкладывает всё как есть, нужно просто идти вниз по линиям.
Ещё один недостаток текста - повторы. Конечно, опытный программист найдёт способ избежания повторов для данной функции,
но плюс ДРАКОНа в том, что нам больше не нужно заморачивать себе голову такими искусственными проблемами.