Вопрос

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

У меня вопрос: вы предоставите файл заголовка для каждый Тип (например, более 50 файлов заголовков для разных), вы бы попытались сгруппировать их в семьи и иметь «общий» файл заголовка для них, или вы не будете осторожно осторожно и бросили их на один простой Файл заголовка использования, который может быть просто включен?

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

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

Заранее спасибо.

Это было полезно?

Решение

Я должен был бы поместить два класса в отдельные заголовки в одном из следующих случаев:

  • Они огромны
  • они не связаны или вряд ли будут использоваться вместе
  • Каждый из них вводит свои собственные зависимости заголовка

В противном случае, не имеет большого смысла их разделить. Я знаю, что у некоторых людей есть это правило «один класс за заголовок», но оно не выглядит разумным в вашем случае.

Что предназначено для «семей», включая множество небольших файлов, в определенных системах сборки (и файловых систем), это может повлиять на время компиляции, и в любом случае я не вижу смысла в этом - обычно люди будут использовать документацию или IDE Чтобы найти занятия, не просматривая имена файлов заголовков. Таким образом, вы бы сделали это только для упрощения включения, но тогда почему бы не поместить их в один и тот же заголовок.

Другие советы

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

Разве все варианты не могли быть шаблонами?

Я был в подобной ситуации, когда я разрабатывал библиотеку графического интерфейса. Первоначально все компоненты (они были небольшими классами) делились одним и тем же заголовком и исходным файлом. Это сработало довольно хорошо. Позже я попытался поместить их в отдельные файлы, но это действительно ничего не улучшило. Он только добавил бремя тратить много времени на поиск в этих файлах.

Помимо этого, возможно, вы можете черпать вдохновение в библиотеке Poco C ++. Эта библиотека обычно следует за одним классом на идиому заголовка, но есть исключения. Например, вся иерархия исключений кодируется на одном заголовке и исходном файле с использованием системы на основе макроса (см. Исключение а также Exception.cpp).

Если они принадлежат к той же иерархии наследования, поместите их в тот же файл .h. Это помогает вам решить правильный заказ на занятия. Одна из менее известных проверок времени компиляции в C ++ опирается на правильный порядок классов в .h File.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top