Как правильно упорядочить мои объекты в классе C ++ - PullRequest
0 голосов
/ 04 марта 2010

В последние месяцы я регулярно пишу на C ++. Я привыкаю к ​​этому шаг за шагом ... но есть вещи, которые меня смущают при форматировании.

Я знаю, что у C есть много наследства, которое я сочетаю с C ++. На этот раз я сомневаюсь, как правильно упорядочить своих членов и функции в классе. Также с учетом их модификаторов доступа.

Какое в этом соглашение? Пока я не знаю, я делаю все "публично" и пишу сначала конструктор класса, затем деструктор, следующие члены и, наконец, функции. Это правильно? Что происходит при введении «приватных» и «защищенных» модификаторов доступа или «виртуальных» функций?

Из документов, которые я смотрел в Интернете, есть разные способы ведения дел. Но мои вопросы направлены на получение знаний от сообщества, которое развивается на C ++, в которое я хочу вписаться. ; -)

Большое спасибо !!!

Ответы [ 5 ]

10 голосов
/ 04 марта 2010

Мое скромное мнение, после прочтения многих руководств по стилю по всей сети:

  • Сначала общедоступно, потому что это интерфейс вашего класса, который люди хотят увидеть первым.
  • Исходя из того же рассуждения, личное идет последним.
  • Если у вас есть личные функции, разместите их перед личными членами. (Опять же, те же рассуждения. Ваши участники никому не интересны.)
  • Конструктор сначала в открытом разделе, потому что люди должны вызывать его до того, как у них появится объект для вызова каких-либо функций.
  • Разрушитель сразу после конструктора, просто чтобы они были в одном месте.
  • В публичных / защищенных / приватных разделах найдите группы, логичные для любых пользователей библиотеки, и напишите однострочный комментарий перед каждой группой. (Не имеет большого значения, какова логика, если это задокументировано.)
  • Не усложняйте никакие правила, потому что чем сложнее, тем легче ошибиться (или просто игнорировать их как неудобные).

Помните, что члены должны быть инициализированы в порядке их объявления, а уничтожены в обратном порядке.

3 голосов
/ 04 марта 2010

Вы сами ответили на свой вопрос: «Есть разные способы ведения дел». Google опубликовал Руководство по стилю C ++ , которое можно использовать в качестве отправной точки.

1 голос
/ 04 марта 2010
Until know I am doing everything "public"

Не. Когда вы создаете класс, это похоже на создание собственного типа, такого как int, char и т. Д.

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

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

1 голос
/ 04 марта 2010

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

Давайте порекомендуем книгу под названием Code Complete, просто поищите в Amazon или в вашем любимом интернет-магазине книг.

0 голосов
/ 04 марта 2010

Порядок не имеет значения.

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

Так что вы можете размещать вещи в том порядке, который вас радует.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...