=AlexD= (02.08.2011 14:23, просмотров: 233) ответил Evgeny_CD на Не только связывания, но и трансформации.
Ну понятно, что разное связывание тянет различия в коде. Я это делаю шаблонами, когда интерфейс реализуется через параметризуемые классы, а затем стек протоколов собирается из шаблонов как матрёшка, в т.ч. подставляются параметры размеров буферов и пр.
Код получается очень эффективен.
Но есть и минусы.
1 Синтаксис С++ помогает собрать, но мешает понять написанное
2 Синтаксис С++ не совершенен, для элементарных вещей приходится пользоваться не очевидными ухищрениями.
3 Поиск ошибки порой просто ..здец, когда смотришь на 100500 этажные описания ф-ий в консоли компиляции.
4 Нет возможности графически посмотреть связи, для человека непосвящённого боюсь код похож на китайскую грамоту.
Почему я так делаю?
1 Отлаживать шаблоны всё же проще, чем макросы
2 Не хочу держать 100500 разных реализаций одного и того-же для разных платформ, отлаживать и сопровождать весь зоопарк.
3 На 1 строку кода у меня 5 строк тестов, тестировать весь зоопарк я просто заипусь, отладил в отладчике VS, пересобрал для всех платформ, ошибка везде пофиксилась. Вносить изменения вручную - значит всё сломать, знаю по своему опыту.
К примеру по ходу алгоритма используются методы логгера. Он написан так, что-бы его методы минимально захламляли текст программы. Для 8 битной платформы он заменяется на класс с пустыми методами, в итоге для него код вообще не генерится. Для хоста это мощнейший класс трассировки и логгирования событий. Для 32х бит embedded это нечто промежуточное.
Всё то-же самое можно и на Си, но будет сильно менее элегантно.
Пример с эмуляцией периферии контроллера путём подстановки вместо имён регистров своих классов-обработчиков я уже приводил.
В общем что сказать, всё было бы хорошо, но синтаксис С++... это реальная засада и проблема, но это единственный инструмент, доступный для большинства платформ.
А с базой я плохо себе представляю как оно работать будет.
Это моё личное предвзятое мнение. Любое совпадение с реальностью является случайным и непреднамеренным.