![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Кто где размещает константы? А т.н. "утилитарные" функции? Просто лично я привык это делать в специализированных классах (в случае функций - static). Но, возможно, этот подход не всегда оправдан и стоит это делать в namespace'ах? Само-собой, имеются ввиду сущности, используемые в нескольких единицах трансляции. В рамках одной единицы константы я просто объявляю в пустом namespace.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Если проводить аналогию дальше, то структуры лучше размещать в namspace'ах, т.к. их тогда можно предобъявлять
и, раз уж объявлять структуры удобнее в namespace'ах, то для универсальности IMHO и константы и ф-ции лучше объявлять там. P.S. Как показывает практика - "константы" лучше считывать из конфига. Кроме "железных", конечно, типа радиуса Земли, скорости света и т.п. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Мне кажется, это вопрос вкуса и личного стиля, типа способа расстановки скобок. Я чаще всего делаю для утилиты или какого-то большого функционального модуля namespace, чтобы потом не париться с длинными именами: у меня там будет CController, CAgent, CParams и т.д., т.к. утилиты чаще всего строятся по общему шаблону (не в смысле template, а скорее в смысле pattern). Но и утилитные клаccы (типа traits) тоже использую, когда это кажется более удобным.
-------------------- ... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
spyswamp, смотря какую сущность они отражают.. в класс пихаю только необходимое, ибо это связывание рук..
так например если несколько свойств отражают паттерн traits (шаблоны) то естественно они должны быть помещены в структуру/класс.. ежели это свойство общего назначения,то неймспейс напрашивается сам собой... ищите суть и красоту и все постепенно обретет свои места.. нужно понимать зачем Вы там размещаете и какую выгоду от этого используете.. в противном случае это напоминает слепое следование дядиному совету.. |
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
borisbn, я вообще все свои классы делаю в нэймспэйсах.
Earnest, префикс к имени класса - это моветон. mes, есть вещи, которые по сути можно разместить и там, и там. В этом-то и вся проблема. -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
По поводу классов и нэймспейсов... Я предпочитаю нэймспейсы. И вообще большая часть моего кода на С++ сосредоточена в функциях, часто внутренних статических, а из нэймспейса торчит АПИ к ним. Большинство классов тоже вспомогательные... -------------------- You're face to face With man who sold the world |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
newbee, имена xml тегов, например.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
Во-первых, xml - это фу. Во-вторых, если ты выносишь имя тега в отдельную константу, значит предполагаешь, что может понадобиться это имя изменить, значит это достойно конфига.
Добавлено через 5 минут и 10 секунд Ну это с моей точки зрения, конечно -------------------- You're face to face With man who sold the world |
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
newbee, какие-то необоснованные фразы у тебя. Например, xml приходит из стороннего приложения. Не надо подводить конфиги под понятие "золотого молота". ;)
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
к сожалению это бывает необходимостью.. в с++ нельзя иметь класс и неймспейс одного имени.. |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
Не знаю, золотое или нет, но на моей практике все константы кроме перечислений потихоньку переходят в конфиги и рантайм. -------------------- You're face to face With man who sold the world |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
namespace. технически класс можно приспособить под коробку для мелочей, но это нарушает (мой) взгляд на класс, как нечто цельное. namespace появился позже класса и стал олицетворять (для меня) средство построения т.н. модуля именно как набора инструментов на одну тематику. типа math::
если набор параметров, то, возможно, структура. хотя, конечно, все это дело вкуса |
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
newbee, мне самому XML из-за неудобства использования не нравится.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| _GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 1 Всего: 7 |
В случае если константа имеет значение только в контексте класса - то внутри класса (static) (хороший пример QFile::remove(QString) - удаление файла по имени непосредственно относится к файлу - нет смысла переносить его в namespace). В противном случае в namespace. Но это случается очень редко. Как правило используется соответствующий синглтон, возвращающий значения опредёлнных констант. Тоже самое касательно "утилитарных функций". -------------------- Дорогу осилит идущий |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |