Каковы преимущества использования более одного файла кода для проекта? (C ++)

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

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

13

Решение

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

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

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

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

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

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

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

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

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

Затем они продолжают Как это сделать, Потенциальные ловушки, Устранение проблем, и т.п.

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

20

Другие решения

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

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

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

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

11

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

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

2

если это небольшой проект, такой как hello world, в этом нет никакого преимущества, но представьте что-то вроде windows, или google chrome, или android.

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

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

1