Форум программистов, компьютерный форум CyberForum.ru

Рекомендация: сначало public, потом protected/private - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
kylroma
Одессит
 Аватар для kylroma
44 / 44 / 18
Регистрация: 30.12.2013
Сообщений: 203
Записей в блоге: 1
Завершенные тесты: 1
10.07.2014, 16:15     Рекомендация: сначало public, потом protected/private #1
На хабре есть статья "90 рекомендаций по стилю написания программ на C++". Интересует вот этот пункт:
44. Разделы класса public, protected и private должны быть отсортированы. Все разделы должны быть явно указаны.
Сперва должен идти раздел public, что избавит желающих ознакомиться с классом от чтения разделов protected/private.


Недавно столкнулся в примере программы. Сначало public, а потом private. Ужасно неудобно читать такую программу. Начинал с конца.
Так вот, действительно, ли является хорошим тоном так писать программы? Или это извращение какое-то?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 16:15     Рекомендация: сначало public, потом protected/private
Посмотрите здесь:

C++ Наследование. Помогите с этими public, protected. private
Ключевые слова private, public, protected C++
C++ Для чего нужны модификаторы protected, private, public
C++ Наследования класса как public, private и protected
C++ Protected Private Public
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
11.07.2014, 12:54     Рекомендация: сначало public, потом protected/private #21
Цитата Сообщение от John Prick Посмотреть сообщение
Я о том, что конструкторы и деструкторы, по твоему же собственному выражению, "как правило всегда" public. Это далеко не так, на мой взгляд.
Ну вот мне и интересно как у тебя такие числа получились. В моей практике ( как я уже писал за исключением noncopyable классов ) приватные конструкторы и деструкторы это весьма редкий случай.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
11.07.2014, 12:59     Рекомендация: сначало public, потом protected/private #22
Voivoid, John Prick, ключевое место в ваших рассуждениях:
Цитата Сообщение от Voivoid Посмотреть сообщение
По-моему
и
Цитата Сообщение от John Prick Посмотреть сообщение
на мой взгляд

Мое персональное предвзятое мнение, что следует группировать методы по определенным, свойственным именно для этого класса (в другом можно и по другому), признакам, и ближе к началу писать основное - методы, ради которых класс и пишется. А всякие дополнительные внутренние плюшки уже можно и в конец писать. Что до фарша из public/private секций, то тут уж личное дело каждого. Ну или как говорит Jupiter.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
11.07.2014, 13:00     Рекомендация: сначало public, потом protected/private #23
Цитата Сообщение от Voivoid Посмотреть сообщение
В моей практике
Видимо, здесь мы и расходимся. Я тоже не буду говорить "за всю Одессу", но я, например, располагаю конструкторы абстрактных классов в protected секции. Бывают и другие случаи. Ну если не 50/50, то всё равно не "почти всегда".

Добавлено через 51 секунду
SatanaXIII, да, согласен.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.07.2014, 13:04     Рекомендация: сначало public, потом protected/private #24
В Java кстати очень часто вот так пишут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Klass {
    private int field1;
    private int field2;
    private int field3;
    ...
    private int fieldN;
 
    public int getField1() {
        return field1;
    }
 
    public int getField2() {
        return field2;
    }
    // etc
}
как в книгах "С++ для начинающих" , но в Java это считается нормальным.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
11.07.2014, 13:13     Рекомендация: сначало public, потом protected/private #25
Таже шляпа в C#.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.07.2014, 14:04     Рекомендация: сначало public, потом protected/private #26
Цитата Сообщение от Kastaneda Посмотреть сообщение
В Java кстати очень часто вот так пишут
Так что в Java, что в шарпах уровень доступа указывается для каждой сущности отдельно, а не задается группами как в плюсах.
Цитата Сообщение от John Prick Посмотреть сообщение
располагаю конструкторы абстрактных классов в protected секции
Если класс абстрактный (имеет чисто виртуальный метод), то его всё равно инстанцировать не получится.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.07.2014, 14:19     Рекомендация: сначало public, потом protected/private #27
Цитата Сообщение от Tulosba Посмотреть сообщение
Так что в Java, что в шарпах уровень доступа указывается для каждой сущности отдельно, а не задается группами как в плюсах.
все равно группировать по уровням доступа то можно. Всмысле сначала public, потом private.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.07.2014, 14:28     Рекомендация: сначало public, потом protected/private #28
Цитата Сообщение от Kastaneda Посмотреть сообщение
все равно группировать по уровням доступа то можно. Всмысле сначала public, потом private.
Можно конечно. Но если в плюсах достаточно перенести сущность в нужную группу, то в жабе/шарпах нужно поменять модификатор доступа. А так как в процессе разработки это может произойти несколько раз, то в итоге может получиться класс с любопытным чередованием модификаторов доступа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2014, 15:38     Рекомендация: сначало public, потом protected/private
Еще ссылки по теме:

C++ private, protected, public
Public и Private C++
Public, Private, Protected (смысл применения) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,579
Записей в блоге: 17
11.07.2014, 15:38     Рекомендация: сначало public, потом protected/private #29

Не по теме:

Цитата Сообщение от John Prick Посмотреть сообщение
Таже шляпа в C#.
Вот именно шляпа...
Не зря говорят что С++ более лаконичен.



Сортировать/группировать нужно, хотя бы для собственного удобства, но по каким параметрам это от ситуации, благо С++ в этом не ограничивает.
Yandex
Объявления
11.07.2014, 15:38     Рекомендация: сначало public, потом protected/private
Ответ Создать тему
Опции темы

Текущее время: 13:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru