Код от действительно заслуживающего уважения человека видел - там "железячно" всё разбито. У меня - компромисс... т.е. не изменяемые вещи вроде работы в УАРТом и протокол - в отдельном файле. Всё остальное - как мне на момент написания проги показалось удобным.
Если не менять ядро, а просто разные процы в линейке, то мне не приходится ни одной проги с нуля писать - беру что-то подходящее и править начинаю.
Так шта с моей точки зрения это оказывается производительнее. А вот как разбираться с моим кодом стороннему человеку - хз.
На рисунке типичная структура моих проектов. Весь функционал в главном модуле, отработка команд от мастера в отдельном модуле, настройка камня сделана в config.h сгенеренным визардом. Но это проект уровня ногодрыжества. Ничего феерического.
Добавил картинку проводника со списком файлов проекта этого уважаемого мною специалиста. Я даже не уверен что все файлы в проекте используются. Просто они есть всегда на случай если потребуются.
Мне лично не удается себя убедить разместить крохотный код для ШИМ в отдельном модуле ибо не знаю как красиво привязать к обработчику таймера. Всё это в главный модуль кидаю.