Основные требования к коду
1 Надёжность
2. Понятность
3. Простота модификации
4. Низкая трудоёмкость написания.
Эти требования предполагается реализовывать за счёт следующих приёмов:
1. Использование готовых библиотек. Надёжность достигается за счёт использования уже проверенного в той или иной степени кода. Понятность достигается за счёт существующие документации на этот готовый код. Простота модификации достигается за счёт того, что как правило в библиотеках есть много вариантов использования и возможностей, которые можно подключить при необходимости. Или перейти на другую библиотеку, так как разные библиотеки имеют похожий интерфейс. Низкая трудоёмкость очевидна.
2. За счёт тщательного продумывания структуры программы в соответствии с принципом предметно-ориентированного программирования. Логическая простота позволяет уменьшать вероятность ошибок на этапе написания и проверки (глазами) кода. Сокращает объём кода. Облегчает модификацию. Хотя требуются некоторые усилия на этапе продумывания структуры, они окупаются на других этапах многократно.
3. Создание микроFrameWork. То есть некоторых логических конструкций (правил) и (необязательно) заготовок кода, в рамках которых реализуется тот или иной функционал. Такой подход позволяет упорядочить логическую структуру, преимущества см выше. Использовать единообразные приёмы, что даёт преимущества по всем пунктам.
4. Документирование кода. Технически рекомендуется использовать doxygen. По содержанию нужно обязательно документировать микроFrameWork. Также нужно документировать смысл логически законченных небольших кусков кода программы, например "обнаружение нажатия кнопки с подавлением дребезга".
5. Обработка ошибок. Начиная от уровня "ошибка зафиксирована" до уровня (по необходимости) "ошибка автоматически исправлена".
6. Для устройств работающих непрерывно, актуальным является вопрос восстановления работы программы после аппаратного сбоя. Это сложный вопрос, очень зависящий от реализации. Обычно сброс позволяет купировать аппаратный сбой.