Какова цель использования нескольких файлов .cpp в одном решении? - PullRequest
1 голос
/ 07 мая 2019

Поскольку я со временем узнал больше C ++, я искал возможность использования нескольких файлов .cpp в одном решении.Это было безрезультатно.

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

1 Ответ

3 голосов
/ 07 мая 2019

Будучи новичком, я даже думал, что несколько файлов затрудняют мне понимание кода.Но после работы над несколькими проектами я понял важность этого модульного подхода.Есть много причин для нескольких файлов в проекте.Здесь я перечислю некоторые из них.

Допустим, вы находитесь в компании и хотите распределить задачи между многими сотрудниками.Теперь, если вы будете работать с одним файлом, вам будет сложно отслеживать, кто что редактирует.Таким образом, мы разбиваем задачу на более мелкие задачи, где каждая задача может быть выполнена отдельным человеком.Мы предоставляем ему определенный интерфейс.В случае C ++ мы можем предоставить заголовочный файл с открытыми методами и публичной переменной.Так что теперь этот человек знает, какие методы он может использовать из той части, над которой работают его коллеги.

Итак, в этой ситуации несколько файлов выполняют следующие функции:

  1. Разделяй и властвуй : Делите задачу между коллегами, не рискуя нарушить чужой код.
  2. Сохраняйте модульный код, где у каждого файла / класса есть определенная функция.Таким образом, в будущем, если мы захотим добавить или удалить некоторые функции, мы можем просто отредактировать этот класс, не тратя слишком много времени на весь код.
  3. Оптимизировать компиляцию : скажем, у вас есть 400 файловв коде и теперь вы меняете 1 строку в определенном файле.Теперь вы можете индивидуально скомпилировать отредактированный файл.Хотя, если это был один гигантский файл, то компиляция неизмененных вещей будет напрасной.

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

Учтите, что вы работаете над сольным проектом.Скажем, у него есть какая-то база данных, функциональность, ввод-вывод, графический интерфейс, некоторые вычисления, такие как поиск и т. Д. Теперь рассмотрим, если вы включите все это в один файл, тогда станет трудно отслеживать различные вещи в кратчайшие сроки, поскольку размер проектаувеличивается, где быстро, даже не сознавая, создатель.Это приведет к дублированию имен функций, переменных, структур и т. Д. Теперь вместо наличия функций log в каждом файле, который регистрирует состояние базы данных, ввод-вывод и т. Д. Соответствующего файла, у вас будет один файл сdatabaseLog, inputLog и т. Д. И какова гарантия того, что у вас не будет других функциональных возможностей в графическом интерфейсе, для которых inputLog не будет подходящим названием.

Допустим, у вас есть какая-то ошибка или сбойв проекте проще посмотреть на один файл, так как на него смотрится меньше.В одном файле вам будет сложно отследить, что и к чему относится.Итак, Отладка упрощается.

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

Если вы пытаетесь прочитать чужой код с несколькими файлами, вот несколько советов:

  1. Посмотрите на один файл за раз и узнайте, что именно он делает.Большинство новичков ошибаются в том, что они начинают с main и продолжают поиск функций, когда сталкиваются.
  2. Я рекомендую вам записать, что делает каждая функция.
  3. Использовать блок-схемы.

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

Надеюсь, это поможет.

...