Подтвердить что ты не робот

В чем преимущества использования более одного кода для проекта? (С++)

В чем преимущества использования нескольких файлов источника (.cpp) и заголовка (.h) в одном проекте?

Это просто льготная вещь или есть настоящие преимущества?

4b9b3361

Ответ 1

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

Обычно у людей есть .h и .c для одного или иногда нескольких классов. Кроме того, он ускоряет компиляцию, так как только измененные файлы и некоторые связанные файлы необходимо перекомпилировать.

Из Организация файлов кода на C и С++:

Разделение любого разумного размера проекта покупает вам некоторые преимущества, наиболее значимыми из которых являются следующие:

  • Ускорить компиляцию. Большинство компиляторов работают с файлом за раз. Поэтому, если все ваши 10000 строк кода находятся в одном файле, и вы меняете одну строку, затем вы необходимо перекомпилировать 10000 строк кода. С другой стороны, если 10000 строк кода распределяются равномерно по 10 файлам, а затем изменяются для одной строки потребуется только 1000 строк кода для перекомпиляции. 9000 строк в остальных 9 файлах не нуждаются в перекомпиляции. (Образцы время не изменяется.)

  • Увеличить организацию. Разделение кода по логическим строкам будет облегчите для вас (и любых других программистов в проекте) найти функции, переменные, объявления struct/class и т.д. Даже с возможностью прямого перехода к данному идентификатору, который предоставляемых во многих редакциях и средах разработки (таких как Microsoft Visual С++), всегда будут моменты, когда вам нужно сканируйте код вручную, чтобы что-то искать. Так же, как расщепление код вверх уменьшает объем кода, который требуется перекомпилировать, он также уменьшает количество кода, которое нужно прочитать, чтобы найти что нибудь. Представьте, что вам нужно найти исправление, которое вы сделали для звука код несколько недель назад. Если у вас есть один большой файл с именем GAME.C, это потенциально много поиска. Если у вас есть несколько небольших файлы, называемые GRAPHICS.C, MAINLOOP.C, SOUND.C и INPUT.C, вы знаете где искать, сокращая время просмотра на 3/4.

  • Содействовать повторному использованию кода. Если ваш код тщательно разбит на разделы, которые работают в значительной степени независимо друг от друга, это позволяет вы используете этот код в другом проекте, сохраняя много перезаписи позже. Существует гораздо больше возможностей для написания многоразового кода, чем использование логическая организация файлов, но без такой организации это очень сложно понять, какие части кода работают вместе и которых нет. Поэтому размещение подсистем и классов в одном файл или тщательно очерченный набор файлов помогут вам позже, если вы попробуйте использовать этот код в другом проекте.

  • Поделиться кодом между проектами. Принцип здесь такой же, как и с проблема повторного использования. Тщательно разделяя код на определенные файлы, вы позволяют нескольким проектам использовать один и тот же код файлы, не дублируя их. Преимущество совместного использования файла кода между проектами, а не только с помощью копирования и вставки, исправления ошибок, которые вы делаете в этот файл, или файлы из одного проекта повлияют другой проект, поэтому оба проекта могут быть уверены в обновленную версию.

  • Разделите обязанности кодирования среди программистов - для действительно больших проектов, это, пожалуй, главная причина для разделения кода на несколько файлов. Для более чем одного человека нецелесообразно внося изменения в один файл в любой момент времени. Поэтому вы необходимо будет использовать несколько файлов, чтобы каждый программист мог работая над отдельной частью кода, не затрагивая файл что другие программисты редактируют. Конечно, проверять, что 2 программиста не пытаются изменить один и тот же файл; системы управления конфигурацией и системы контроля версий, такие как CVS или MS SourceSafe помогут вам здесь. Все вышесказанное может быть которые считаются аспектами модульности, ключевым элементом как структурированный и объектно-ориентированный дизайн.

Затем они продолжают рассказывать о том, как это сделать, о потенциальных ловушках, проблемах с фиксацией и т.д.

Вы должны проверить это.

Ответ 2

Файлы кода становятся недостижимыми (попробуйте выполнить поиск в них!) после нескольких сотен строк. Некоторые люди поднимаются до нескольких тысяч (но это уже проблема). Даже небольшие проекты имеют тысячи линий, средние проекты имеют десятки тысяч линий, а крупные проекты имеют миллионы линий. Текстовые редакторы не могут справиться с файлами, большими (но сами программисты тоже не могут).

Разделение проекта на разные исходные файлы также необходимо, если вы хотите разделить свой проект на разные единицы компиляции, что значительно ускоряет компиляцию, потому что необходимо перекомпилировать только часть проектов.

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

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

Ответ 3

Различные файлы cpp скомпилированы как отдельные единицы компиляции. Это позволяет вам изолировать вещи (заголовок, анонимные пространства имен, pimpl) от остальной части исходного кода.

Иногда две библиотеки не могут использоваться вместе в одном исходном файле, так как они сталкиваются с именами. Это можно решить, включив каждый заголовок библиотеки в другой файл cpp и предоставив необходимую функциональность через соответствующие файлы заголовков.

Ответ 4

если его небольшой проект, такой как мир привет, не имеет никакого преимущества, но представьте что-то вроде окон или google хром или андроида.

проект такого размера не может управляться одним файлом.

несколько файлов для вашего проекта касаются управляемости и удобства использования кода.