論理モジュールと制御スレッドを直交させることを推奨します。

論理モジュールとは、機能を実現する静的ビューのこと。制御スレッドとは、その論理モジュールを起動停止する動的ビューの仕掛けです。

例えば、mainループでは、論理モジュールのトップ関数を呼び出すだけにします。mainループで処理の流れを書いてしまうと、論理的な処理順序と時間的な処理順序を同時に考えながら理解・修正しなければなりません。ある処理を取り除いたら、タイミングが合わなくなった、なんていうビューを横断してしまう不具合も発生してしまいかねません。

mainループだけではなく、割り込み/タイマー発火/タスクのイベント待ちループ、は、制御スレッドの起点となりますので、そこにベタ書きで処理の流れを書かないようにします。

機能の追加修正は静的ビューの論理モジュール構造(静的構造図)で、タイミングは動的ビューの制御スレッド構造(動的構造図)で設計することをお勧めします。それにより、仕様変更に柔軟で、かつ、不具合に堅牢なソースコードを作ることができます。

動的構造の設計は、構造化モデリング[動的]セミナーで。