Где почитать про правильную структуру программы.

программирование алгоритмы

Пишу для встраиваемых систем на Си. Без использования ОС. На Си опыт не большой, раньше много писал на асемблере, от туда и много "дурного" для Си в подходах, Сейчас мои программы похожи по структуре на асемьлерные , что на мой взгляд неправильно для Си. Озаботился вопросом эффективного разделения программы на функции и использование глобальных переменных. Пока мои программы содержат очень много глобальных переменных, которые изменяются разными функциями. Это делает код очень трудно переносимым. Вопрос такой - где можно почитать про подход к решению подобной проблемы?
Всем спасибо.
Ответы:
книг что-то и не припомню, которые на этом концентрируются
лично от себя могу посоветовать чаще использовать тип данных struct. это первый шаг к ООП
кстати говоря, думается, применение принципов ООП (насколько это возможно в С) может сослужить хорошую службу не только сделав код более читаемым, но и более гибким
в общем, думаю, надо копать именно в эту сторону. она мне видится наиболе оптимальной
о, и книгу вспомнил "object-oriented programming with ANSI-C" http://www.cs.rit.edu/~ats/books/ooc.pdf
не читал, правда, поэтому не знаю насколько она подходит для человека не знакомого с ООП (коим вы может быть являетесь), однако неоднократно сталкивался с тем что её называют "библией" ((%
моё внимание она привлекала чисто из академического инереса (да вот читать некогда, не приоритетна), надеюсь никогда на практике не пригодится, ибо на С писать после С++ и С# это ад
Даже на ассемблере широкое использование "глобальных" переменных и отсутствие модулей не есть хорошая практика, это совершенно справедливо и про си. Научитесь использовать функции и передавать им параметры разными способами и жизнь станет лучше.
Всё правильно, так и делай. Захочешь объектно-ориентированного, тогда будешь писать на C++ и Java.
Про "области видимости C" - гугли по этой фразе. Если коротко, то переменная не видна за пределами фигурных скобок. В частности за пределами функций.
я не говорил о том что нужно использовать ООП, я говорил о том что можно воспользоваться некоторыми его принципами в плане структурирования кода
например структурировать данные и выносить их в модули с функциями, с ними взаимодействующими, активно использовать пространства имён. при этом сами функции должны быть как можно более узко специализированы. это уже некисло поможет структурировать программу, а как результат облегчит процесс отладки и повысит читаемость
zloidooraque, прошу прощения, но вы на С писали?:)
С каких пор его синтаксис стал стал адовым?
Структурирование данных (вне контекста ООП) и использование модулей, вообще-то, в С++ именно от C.
Ну и, наконец, об отладке - код на C отлаживается, как правило, намного проще чем код на С++ из-за его прозрачности и низкоуровневости.
это смотря сколько его нужно написать.
zloidooraque, тогда могу вам сказать на полном серьезе - С и С++ это разные языки и не надо их мешать, а так же не надо склоняться к какому-либо из них.
Я работал на очень больших (много сотен тысяч строк) проектах полностью на С и С++ (приблизительно 60 на 40%) и прекрасно знаю о недостатках обоих языков. И именно это знание не дает мне склоняться к какому-либо из них - каждый из них прекрасен по-своему. Чего и вам советую.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.