Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Sapfil
Сообщений: n/a
#1

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

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

Привет.

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

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

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

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

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

Просьба к опытным программистам. Особенно к тем, кто имеет опыт работы в команде. По вашему мнению кто прав - автор проекта или я. Если есть ссылка на книжку по "правильному, понятному для других коду" - буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2011, 15:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос "хорошего тона", "стиля" в программировании - правильное использование #include (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс "вентилятор" содержащий в себе классы:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

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

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

Добавлено через 2 минуты
Sapfil, посмотри сколько *.lib файлов содержит каталог студии и поймёшь о чём говорил
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
20.09.2011, 16:43 #3
Так это уже на любителя, у Страуструпа вся 9ая глава этому посвящена, почитайте если интересно.
-=ЮрА=-
Заблокирован
Автор FAQ
20.09.2011, 16:45 #4
Sapfil, посмотри, там и lib и dll Помогите с подключением dll к проекту
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
20.09.2011, 16:59 #5
Sapfil, посмотрите организацию проекта http://www.cyberforum.ru/cpp-beginners/thread41218.html.

Добавлено через 2 минуты
гмм... правка не работает почему-то..
пишем свой интерпретатор
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.09.2011, 17:29 #6
Sapfil,
А в .cpp-файл включается только одноименный .h-файл. Ну и в некоторых случаях файлы типа "math.h".
Бред. Какой смысл забивать .h файл инклудами, которые нужны только в cpp?
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
20.09.2011, 18:41 #7
По возможности и необходимости, все инклуды нужно пихать в cpp файл.
Хедер-"лицо" модуля(cpp файла), в нём не должно быть лишней информации.
Зачем это нужно, чтобы каждый раз при компиляции очередного исходника, который использует этот хедер, компилятору летел лишний текст из инклудов?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2011, 18:41
Привет! Вот еще темы с ответами:

#include "Sales_item.h" - ошибка "включаемый файл включает самого себя" - C++
Пишу в файле Sales_item.h следующее: #include "Sales_item.h" #include <iostream> void main() { Sales_item book; //тут...

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include <iostream> #include...

Создать иерархию классов "Фирма", "Бухгалтер", "Сотрудник", "Зарплата" - C++
Само по себе понятие "зарплата" не особенно конкретное: оно включает и почасовую, и ставочную зарплату, и комиссионные, и процент с продаж....

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.09.2011, 18:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru