Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Sapfil

Вопрос "хорошего тона", "стиля" в программировании - правильное использование #include

20.09.2011, 15:52. Показов 2531. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.

Вступление. Имею небольшой опыт в программировании. Сейчас мне дали разобрать один проект, как пример работы HGE и Box2D.

Суть. Я всегда считал, что каждый блок программы оформляется в виде двух файлов - .cpp-файл и .h-файл. В .h- прототипы, классы, а в .cpp- выполнение, собственно сам код. Посмотрев в .h-файл, можно понять ЧТО делает данный блок, а посмотрев в .cpp-файл, - КАК он это делает.

В .h-файл при помощи #include включаются другие .h-файлы, нужные для работы данного блока. А в .cpp-файл включается только одноименный .h-файл. Ну и в некоторых случаях файлы типа "math.h".

Однако, начав копаться в чужом проекте я обнаружил множество инклудов как в .cpp- так и в .h- файлах каждого программного блока. Причем в .cpp- включены именно сторонние .h-файлы.

Автор того проекта считает такое положение вещей правильным. И даже как-то объясняет свою позицию. Во-первых он говорит что так быстрее компилируется. Во-вторых он как-то разделяет по смыслу то что включается в .h- и то что включается в .cpp-файл. Но я считаю, что это очень неудобно для стороннего наблюдателя - трудно отследить что куда включается и что где используется.

Просьба к опытным программистам. Особенно к тем, кто имеет опыт работы в команде. По вашему мнению кто прав - автор проекта или я. Если есть ссылка на книжку по "правильному, понятному для других коду" - буду очень благодарен.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.09.2011, 15:52
Ответы с готовыми решениями:

Правила хорошего тона в программировании в VB (+++)
Господа программисты, давайте обсудим правила хорошего тона программирование в VB. Например у меня есть такой вопрос, я часто ипользую...

Правильное использование include (PHP)
Если в пользовательском классе используются еще и другие классы (каждый хранится в отдельном файле), то где правильно размещать...

Правила хорошего тона?
У меня есть много окон. Экземпляры моделей для них я храню в самом App. Пример: public partial class App : Application { public...

6
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
20.09.2011, 16:41
Цитата Сообщение от Sapfil Посмотреть сообщение
Я всегда считал, что каждый блок программы оформляется в виде двух файлов - .cpp-файл и .h-файл. В .h- прототипы, классы, а в .cpp- выполнение, собственно сам код. Посмотрев в .h-файл, можно понять ЧТО делает данный блок, а посмотрев в .cpp-файл, - КАК он это делает.
- есть ещё библиотеки lib (они заменяют собой тот самый срр, которого как бы не находишь)Простыми словами lib - это уже откомпилиній срр-ник с готовыми функциями на пользование. В хедерах студии стоит #pragma comment(lib,"some.lib").

Цитата Сообщение от Sapfil Посмотреть сообщение
Однако, начав копаться в чужом проекте я обнаружил множество инклудов как в .cpp- так и в .h- файлах каждого программного блока. Причем в .cpp- включены именно сторонние .h-файлы.
- понятное дело когда пишем класс с нуля сначала создаём срр, производим дебаг а вот потом если уж задаться целью можно из откомпилированного срр создать lib который прописать уже в хедере.

Добавлено через 2 минуты
Sapfil, посмотри сколько *.lib файлов содержит каталог студии и поймёшь о чём говорил
0
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
20.09.2011, 16:43
Так это уже на любителя, у Страуструпа вся 9ая глава этому посвящена, почитайте если интересно.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
20.09.2011, 16:45
Sapfil, посмотри, там и lib и dll Помогите с подключением dll к проекту
0
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
20.09.2011, 16:59
Sapfil, посмотрите организацию проекта https://www.cyberforum.ru/cpp-beginners/thread41218.html.

Добавлено через 2 минуты
гмм... правка не работает почему-то..
пишем свой интерпретатор
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.09.2011, 17:29
Sapfil,
А в .cpp-файл включается только одноименный .h-файл. Ну и в некоторых случаях файлы типа "math.h".
Бред. Какой смысл забивать .h файл инклудами, которые нужны только в cpp?
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
20.09.2011, 18:41
По возможности и необходимости, все инклуды нужно пихать в cpp файл.
Хедер-"лицо" модуля(cpp файла), в нём не должно быть лишней информации.
Зачем это нужно, чтобы каждый раз при компиляции очередного исходника, который использует этот хедер, компилятору летел лишний текст из инклудов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2011, 18:41
Помогаю со студенческими работами здесь

Правильно хорошего тона
Предлагаю обсудить насущные вопросы связанные с использование HTML5!!! Как вы считаете хорошо ли внутри <section> писать...

std:: - правило хорошего тона,или?
часто встречается разный код,где одно и тоже пишется по разному: int n; cin >> n; cout << n; или так: int...

Механизмы безопасности (и правила хорошего тона)
Добрый день Уважаемые! Заранее прошения за возможно слишком общую тему, но видимо ввиду длительного отсутствия практики...

Плагины и правила хорошего тона программирования
Доброе время суток! Пишу достаточно большую программу на C#.NET 3.5 Все пока получается но есть пара вопросов: 1) Все функции...

Оптимизация кода и правила хорошего тона
Доброе утро! Изучаю php и сразу пытаюсь делать все грамотно и не плодить лишнего. Так вот подскажите как можно упростить мой код и какие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru