Перейти к содержанию
    

Как ПРАВИЛЬНО программировать на С++

по осени начал писать проект для сигнальника TI, решил на свой страх и риск использовать С++ и динамическое управление памятью в некоторых моментах.

поскольку продумать изначально удачную структуру умишка не хватило (в-смысле, не смог) структура программы получилась путанная местами и через чур замудренная. Сейчас дописываю... Естественно, что писалось полгода назад я уже наглухо забыл. В-принципе, мне нравится - с помощью Doxygen'овской документации весьма приятно дописывать.

Динамическое выделение пока также работает стабильно, я боялся худшего.

 

Немного неудобно использовать inline функции в классах - CCS 3.3 корявенько их разворачивает в редакторе во время отладки и по шагам ходит как-то неправильно местами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да это явление может и нормальное, я не спорю. Хуже когда этот класс в принципе не может иметь несколько экземпляров - это уже архитектурная проблема, говорящая о том, что классу тут делать нечего.

Можно например написать класс CIdle, который будет инкапсулировать в себе бесконечный цикл, имеющийся в любом контроллере

Во-первых, если я хорошо высплюсь, то я и "чисто-С-шных" маразмов в ответ смогу придумать как доказательство того, что С в микроконтроллрах делать нечего.

Во вторых, в этой теме уже говорили - и в С несколько переменных, относящихся к одной и той же логической сущности, имеет смысл объединить в структуру даже если эта структра используется в программе в принципе один единственный раз. Это будет "архитектурной проблемой" ? Лучше пусть будет несколько на вид независимых переменных?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У "плюсов" есть ещё один несомненный плюс. Прежде чем сломя голову что-то писать, надо сначала продумать структуру.

То есть, дополнительный организующий момент.

Кстати, данная тема именно с этого и началась - с вопроса об оптимальной структуре.

 

Я то наивно полагал, что продумывать структуру программы необходимо вне зависимости от языка программирования. :biggrin:

 

Выскажу кромольную мысль:

На архитектуру язык программирования влияет лишь косвенно. Этап перехода с С на С++ уже давным давно закончился (если кто-то ещё не заметил). Все более или менее крупные и что немаловажно УСПЕШНЫЕ компании специализирующиеся на разработке софте (и эмбеддед в том числе) начинают с UML или подобного дизайна. Да собственно это и есть основной этап. А в получившейся на выходе архитектуре-софте любая команда индо-китайских тупокодеров добьёт код за пару месяцев.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я то наивно полагал, что продумывать структуру программы необходимо вне зависимости от языка программирования. :biggrin:

Ну, иерархическая модель классов более располагает к структурированию, чем рассыпные модули си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы сказал так — по сравнению с С язык С++ более жёстко наказывает за непродуманность структуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы сказал так — по сравнению с С язык С++ более жёстко наказывает за непродуманность структуры.

Скорее более явно показывает (подчеркивает) корявости в этом контексте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Примеры есть у меня, есть и свой подход к программированию для систем с сильно ограниченными ресурсами на С++(на примере AVR).

Будет свободное время - напишу статейку по этой теме (если будут желающие её читать :) ).

А так вкратце могу сказать, что программы на С++ получаются компактнее, быстрее и легче читаются аналогичных программ на Си.

Может, напишем сообща?

:rolleyes:

Я уже название придумал.

"С++ в микроконтроллерах. Почему бы и нет?"

Желающие читать такие статьи есть! Вот по крайней мере я, например! Так-что жду с нетерпением.

А как наберете с десяток статей - соедините их в книгу и будете барыши получать. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как наберете с десяток статей - соедините их в книгу и будете барыши получать. ;)

 

Наивность впечатляет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этап перехода с С на С++ уже давным давно закончился (если кто-то ещё не заметил).

Да... я заметил. Закончился. Как и жизнь C++. Мало того - когда о Cpp забудут на C еще будут писать целые системы.

 

Все более или менее крупные и что немаловажно УСПЕШНЫЕ компании специализирующиеся на разработке софте (и эмбеддед в том числе) начинают с UML или подобного дизайна.

:biggrin: ... Эмбэддед буржуи часто называют JavaME. А "подобный дизайн"... Так все с него начинают. Даже строители зданий из железобетонных блоков.

 

Да собственно это и есть основной этап. А в получившейся на выходе архитектуре-софте любая команда индо-китайских тупокодеров добьёт код за пару месяцев.

Я сомневаюсь, что для 8-и битника стиральной машины нужна прям-таки команда индусов и менеджеров с UML диаграммами в руках.

 

Ну, иерархическая модель классов более располагает к структурированию, чем рассыпные модули си.

:biggrin: ага... И к постоянному переструктурированию. Сколькими способами можно разбить белый лист на подчасти!? Не даром в том же C++ есть все что-бы нарушить инкапсуляцию "если очень надо"... Ну а полиморфизм - это ли не повод накидать в проект всего чего не лень? То, что при этом он, зачастую теряет не только обозримость, но и простую читабельность(х.з. какую там из реинкарнаций и где вызывают - и не все IDE такие же функциональные как мелкософтовская визуалстудия). Ну а уж если появилась иерархическая модель классов - это верный признак, что от первоначальной архитектуры отказались :biggrin: :biggrin: :biggrin: , но переписать все заново не представляется возможным ввиду отсутствия времени совместно с запутанностью и нечитабельностью уже написанного кода.

 

 

Хорошая статья что-бы задуматься - а туда ли в жизни направляешь стопы свои... ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это всё конечно хорошо, в теории.

А в реальности никто не даст 20 лет на вылизывание кода, как в случае с академическим миниксом.

Зачастую цикл жизни изделия составляет от 2 до 5 лет.

Да и не в каждой конторе работают гении уровня Таненбаума.

Так что, оставшимся остаётся довольствоваться прозой и использовать общепринятые методики и наработки.

Тем более что действительно, лучше сегодня выпустить актуальное, хоть и несколько сырое изделие, чем завтра сидеть с вылизанным, но никому не нужным...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошая статья что-бы задуматься - а туда ли в жизни направляешь стопы свои...
А вы никогда не слышали как Торвальдс критикует микроядра? :) :bb-offtopic:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы никогда не слышали как Торвальдс критикует микроядра? :) :bb-offtopic:

Торвальдс и Си++ усиленно критикует.

Мне нравится, что Steven Dewhurst ему на это отвечает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но когда у вас будет огромный проект, вы встряните и будете долго понимать, как же так получилось непонятно.
Вот большой проект: http://www.freebsd.org/cgi/cvsweb.cgi/src/. C++ есть только в библиотеках для C++. Ничего, не встряли. А NetBSD из той-же серии так вообще на тьму платформ портирована, и во многом благодаря здоровому консерватизму.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот большой проект: http://www.freebsd.org/cgi/cvsweb.cgi/src/. C++ есть только в библиотеках для C++. Ничего, не встряли. А NetBSD из той-же серии так вообще на тьму платформ портирована, и во многом благодаря здоровому консерватизму.

А в чем плюс то голого сишного подхода? Никто не спорит, что все, что пишется на С++, можно сделать и на Си.

Вопрос - какими средствами и какой надежностью.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...