Методы! Работай через функции-методы, пусть даже inline. Делал рефакторинг унаследованного кода со 100500 глобальными переменными - волосы дыбом стояли.
Порезал единый main.c на ~30 файлов с разными программными модулями. Каких только ошибок я не понаходил - весь спектр практически!
Функции-обёртки меня спасли. Позволили более-менее ровно перейти от изменения поведения к изменению состояния.