Цитата(SasaVitebsk @ Oct 4 2007, 04:58)

Кратко - так. Само устр-во исполняет команды (структуры). Команды поступают извне. Сам транспортный уровень развязан. То есть самому устр-ву до лампочки каким образом они поступают. RS485/I2C-EEPROM/MMC. Возможно будут и другие виды интерфейсов. Во всяком случае планирую какой-нибудь радио-интерфейс, возможно ethernet. Поступают они как из файла - последовательность байтов с байтстафингом. По метке начала команды - определяется команда. Команды имеют разные поля(параметры) и разную длину. В начале команды идут поля идентичные во всех командах. Для этого я имею мифическую несуществующую структуру и сначала прикладываю её. По ней узнаю имя команды её длину (соответственно) и некоторые другие общие поля. После этого, я уже накладываю реальную структуру и работаю с реальными полями структуры. Разные команды имеют общие поля. Но разный их набор. Ну и так далее. Короче сейчас мне очевидно, что вся эта прога неплохо бы легла на объекты и С++ соответственно.
Похоже, что тут сильно пахнет уже именно ООП. Т.е. иерархией классов с виртуальными функциями и полиморфизмом. Вот эта мифическая несуществующая структура - это абстрактный базовый класс, в котором объявлены чистые виртуальные функции (pure virtual), от него уже строится иерархия классов-потомков, в которых реализуется вся функциональность.
Цитата(SasaVitebsk @ Oct 4 2007, 04:58)

Честно говоря - всё вылизано и прекрасно работает. Возвращаться к этому не очень хочется. Но проект развивается и будет развиваться впредь. Будет переносится на другие камни и будет другие возможности иметь.
И вот теперь вопрос. Понимаю конечно, что за меня никто это решение не примет. Поэтому вопрос скорее риторический, но всё же. Стоит ли перетаскивать/перелопачивать проект? Кто как делал?
Ну, стоит или нет, это уже вам решать. В принципе, переписать описываемую часть под ООП не слишком сложно и трудоемко, имхо. Главное, прикладная часть уже вылизана, ее не трогать. Т.е. просто останется "оболочку" перенести. Если идеология близка, то вообще должно легко пойти.
Цитата(SasaVitebsk @ Oct 4 2007, 04:58)

Может кто какую историю раскажет или своё мнение выскажет. Или поделится соображениями на этот счёт.
По-хорошему, это надо делать под системой управления версиями. Текущий проект пусть будет, как есть, а для переноса создать ветку и перетаскивать туда куски. Т.е. сперва там "скелет" программы набросать, иерархию создать для всех команд. Потом уже по очереди перетаскивать код, собсно реализующий команды. Постепенно проект в ветке обретет всю функциональность имеющегося. Но будет построен на "скелете" иерархии, что, безусловно, придаст четкости, логичности и сделает расширение прозрачным и формализованным.
Цитата(SasaVitebsk @ Oct 4 2007, 04:58)

Скажу так. Вылизывал я детали и тонкости месяца четыре не меньше. Команды, да ещё параметры. То границы кое-где, то ещё что. То быстродействие отрабатывал.
Ну, это к классам отношения не имеет. Этот отлаженный код просто перенесется в функции-члены классов почти без изменений (некоторые изменения все же нужны будут, но они синтаксического плана, не функционального).
«Отыщи всему начало, и ты многое поймёшь» К. Прутков