Название: Правильный стиль программирования Отправлено: billidean от Февраль 15, 2016, 16:23 Добрый день всем.
Пишу программу управления процессом работы внешних устройств. У меня в программе (пишу на Qt, естественно :)) есть такой момент: по нажатию кнопки происходит выполнение очень длинной последовательности действий: инициализация внешнего железа, запуск неких калибровочных процессов, движение неких движков, ...., при этом каждый раз происходит ожидание завершения каждого из действий (с таймаутами, конечно же). Пока все было в процессе срочного написания и отладки с требованием "лишь бы поскорее заработало, а причешем прогу потом", поэтому писал путем накидывания кода в один обработчик кнопки. НО, пришло время причесывать прогу и встал БОЛЬШОЙ вопрос, в каком стиле пишут такие длинные процедуры?? (текущая составила 750 строк кода). Думаю просто разбить на некоторое количество функций и вызывать их последовательно. Но как-то немного засомневался, правильно ли я запланировал :-\ :-\ Если у кого-нибудь есть опыт написания подобных длинных процедур, прошу наставить на путь истинный. Название: Re: Правильный стиль программирования Отправлено: Bepec от Февраль 15, 2016, 17:27 Процедуру в другой поток кинуть, вместо условий на выход, делаем сигнал состояния.
Основной поток лишь запускает и потом через сигналы смотрит состояние. Название: Re: Правильный стиль программирования Отправлено: __Heaven__ от Февраль 16, 2016, 09:40 Вы же сами себе и расписали :)
инициализация внешнего железа, запуск неких калибровочных процессов, движение неких движков, .... Это и будут ваши разбиения на более маленькие функции. Не сомневайтесь :) Название: Re: Правильный стиль программирования Отправлено: qate от Февраль 16, 2016, 10:14 "лишь бы поскорее заработало, а причешем прогу потом" дык, так большинство программ пишутся Название: Re: Правильный стиль программирования Отправлено: Igors от Февраль 16, 2016, 10:27 ...и встал БОЛЬШОЙ вопрос, в каком стиле пишут такие длинные процедуры?? (текущая составила 750 строк кода). Вы сами почувствуете удачность этого решения по тому "насколько хорошо разбивается". Если ф-ции выходят по 2-3 аргумента - то все норм, наверняка удастся даже код сократить. А вот если "колбаса" с 5 и более параметрами - значит что-то "не то" Думаю просто разбить на некоторое количество функций и вызывать их последовательно. Название: Re: Правильный стиль программирования Отправлено: __Heaven__ от Февраль 16, 2016, 11:44 Ну и куда же без этого (http://www.ozon.ru/context/detail/id/21916535/)
Название: Re: Правильный стиль программирования Отправлено: Vamireh от Февраль 16, 2016, 18:48 Пишу подобные программы (правда, давно на C# перешел). Будет ли меняться последовательность действий?
В любом случае, лучшее, что я нашел для себя - это записать все действия в виде понятных человеку скриптов, а потом тупо их выполнять. Создается интерфейс (то есть, тьфу, абстрактный класс), у которого методы типа:
Реализуются классы для управления всеми вашими устройствами. А интерпретатор этих скриптов построчно читает скрипт и запускает Exec() для текущей команды. Методы Stop() и Quit() нужны для приостановки (кнопка Пауза) или остановки (кнопка Закончить). В общем как-то так, лень писать. Еще придется парсер писать и т.д. EDIT: еще могу добавить, что по такому принципу управляются десяток устройств с временем выполнения одного скрипта до 5-7 суток непрерывной работы. Название: Re: Правильный стиль программирования Отправлено: popper от Февраль 16, 2016, 19:31 Когда-то сам для решения подобной задачи пытался освоить QStateMachine однако терпения не хватило :-\
|