ya (13.10.2010 11:18, просмотров: 1) ответил Скрипач на В двух словах
Только вот при использовании такой архитектуры напрямую сильно страдает модульность программы, вплоть до превращения её в говнокод. Как говорят знающие люди - программу нужно разбивать на модули - си, асм, не важно. Чем меньше внешних функций позволяет вызывать модуль - тем понятнее его работа и ниже связанность модулей в программе, то есть понятнее вся программа. Представим, что есть модуль мигания светодиодом, имеющий интерфейс:
// onTime - время во включ состоянии
// offTime - время в выключ состоянии
//
void set_led_state(int onTime, int offTime);
для использования таймера придется ввести еще одну функцию и вызывать ее в обработчике таймера:
//
void call_this_function_every_10_ms_to_support_led_pulsing();
Не трудно заметить, что:
1. Можно забыть о ней, тогда модуль работать не будет;
2. Можно вызывать ее с неправильным периодом, тогда модуль работать будет, но не правильно.
3. Управлять таймером из такого модуля практически невозможно с сохранением модульности.
4. Главный цикл программы перегружается непонятными функциями типа call_this_function_every_10_ms_to_support_led_pulsing();
5. Для понимания работы программы нужно охватывать большие куски кода (в принципе логически не связанные).