Какой тип машины вы спрашиваете? Машина, которая измеряет клин и округлость линз.Как бы вы создали приложение для запуска машины?
Я уже написал программное обеспечение для машины, и оно находится в производстве, но оно хрупкое и подвержено блокировке, когда они не делают вещи в правильном порядке. Я пытаюсь придумать лучший способ архитектовать его так, чтобы он был стабильным и поддерживаемым.
Вот быстрый двадцать второй пробег вниз. Существует два режима: настройка и запуск. В режиме настройки оператор может вручную переместить любой из 6 различных двигателей, используя один из 6 различных переключателей с мгновенным переключением на панели управления. Они получают все, что в них есть, затем они превращают его в режим работы, загружают линзу и нажимают. Машина автоматически добавит три индикатора, найдет край линзы, а затем повернет шпиндель и измеряет весь клин.
Я закончил с очень бедным не-дизайном, имеющим класс, который поднял событие, которое говорит, когда переключатель изменил состояние, которое переключилось, и каково его новое состояние. Затем я делаю много вещей, чтобы определить, что может сделать машина. Как вы можете себе представить, это очень плохо.
Есть ли у кого-нибудь хорошие идеи о том, как структурировать это? У меня есть свои собственные, но я хочу услышать некоторые из тех, которые могут быть немного более опытными в разработке такого типа приложений.
Любой вид примера кода/псевдо-код, вероятно, получить вам больше подробные ответы. – tgray
Я ищу общий дизайн программ автоматизации машин. Как я должен инкапсулировать панель коммутатора и иметь свойство для каждого переключателя/кнопки, а затем подключать команды до событий отдельных кнопок и поместить логику в команды о том, может ли команда выполнить и т. д.? –
Должны ли вы «поместить логику в команды о том, может ли команда выполнить»? Вы моделируете «команду», например «сделайте мне тост». Является ли «команда» в реальной жизни чем-то, что инкапсулирует знание условий, при которых эта команда может быть выполнена? Нет. Так что не моделируйте свою программу таким образом. У вас есть три вещи - состояние физических _механизмов_, _commands_, представленных пользовательскими входами через эти механизмы, и _policies_, которые описывают, какие юридические команды и каковы их последствия, при определенных состояниях. –