Re[6]: best practices по поводу констант
От: rg45 СССР  
Дата: 27.01.14 15:19
Оценка: +2
Здравствуйте, VladFein, Вы писали:

R>>И в этом плане определение целочисленных констант при помощи enum имеет очевидное преимущество.


VF>что не мешает этому оставаться грязным хэком...


Тут уже кто как ярлыки развесит...
--
Справедливость выше закона. А человечность выше справедливости.
Re: best practices по поводу констант
От: Lepsik Индия figvam.ca
Дата: 28.01.14 19:54
Оценка: +1 -1
FH>Вопрос по дизайну и правилам хорошего тона.


static const int  s_nLocalCounter    = 1; 
static const char s_szLocalName[]    = "local name"; 

const int        g_nGloabalCounter  = 1;
Re[2]: best practices по поводу констант
От: rg45 СССР  
Дата: 29.01.14 12:53
Оценка: 1 (1) :)
Здравствуйте, Lepsik, Вы писали:

L>
L>static const int  s_nLocalCounter    = 1; 
L>static const char s_szLocalName[]    = "local name"; 

L>const int        g_nGloabalCounter  = 1; 
L>




Во-первых,
const int g_nGloabalCounter  = 1;

это то же самое, что и
static const int g_nGloabalCounter  = 1;

поэтому не очень понятен принцип, по которому ты в одних случаях используешь префикс "s_", а в других "g_".


А во-вторых, современный C++ движется в сторону обобщенного программирования и обобщенных алгоритмов, к абстрагированию от конкретных типов. Поэтому ИМХО, использование префиксов, описывающих тип (а тем более связывание или storage duration) — это уже вчерашний день, а не best practices.
--
Справедливость выше закона. А человечность выше справедливости.
Re[3]: best practices по поводу констант
От: Roman Odaisky Украина  
Дата: 30.01.14 16:03
Оценка: :)
Здравствуйте, rg45, Вы писали:

R>А во-вторых, современный C++ движется в сторону обобщенного программирования и обобщенных алгоритмов, к абстрагированию от конкретных типов. Поэтому ИМХО, использование префиксов, описывающих тип (а тем более связывание или storage duration) — это уже вчерашний день, а не best practices.


А что не так в g_ и m_? И венгерская нотация — тоже нужная вещь.
До последнего не верил в пирамиду Лебедева.
Re[4]: best practices по поводу констант
От: VladFein США  
Дата: 30.01.14 17:32
Оценка: -1
Здравствуйте, Roman Odaisky, Вы писали:

RO>А что не так в g_ и m_? И венгерская нотация — тоже нужная вещь.


Во-первых, rg45 сравнивал "s_" и "g_", ошибочно утверждая, что между ними нет разницы (разница в видимости за пределами единицы трансляции).
Во-вторых, давайте начнём "спор" о венгерской нотации в отдельной теме, сразу в СВ
Re[5]: best practices по поводу констант
От: uzhas Ниоткуда  
Дата: 30.01.14 17:45
Оценка: 6 (1) +1
Здравствуйте, VladFein, Вы писали:

VF>Во-первых, rg45 сравнивал "s_" и "g_", ошибочно утверждая, что между ними нет разницы (разница в видимости за пределами единицы трансляции).

const объекты по умолчанию имеют внутреннее связывание (internal linkage), так же как и static переменные

VF>Во-вторых, давайте начнём "спор" о венгерской нотации в отдельной теме, сразу в СВ

+1
Re[4]: best practices по поводу констант
От: rg45 СССР  
Дата: 30.01.14 17:46
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

R>>А во-вторых, современный C++ движется в сторону обобщенного программирования и обобщенных алгоритмов, к абстрагированию от конкретных типов. Поэтому ИМХО, использование префиксов, описывающих тип (а тем более связывание или storage duration) — это уже вчерашний день, а не best practices.


RO>А что не так в g_ и m_? И венгерская нотация — тоже нужная вещь.



Думаю, как бы так ответить, чтоб и кратко и, в то же время, не провоцировать ненужных дискуссий. Скажем так, строго доказательства у меня нет, но есть вера в то, что без этих префиксов можно обойтись. Префикс m_ я и сам широко использую, но если подумать, то в хорошо спроектированном коде и он не нужен. От g_ и s_ так точно можно избавиться. Венгерская нотация — достаточно большой комплекс различных правил, дискутировать о нем можно долго. Я бы ограничился только рассмотрением вопроса кодирования типов переменных в их именах: "d", "n", "p", "sz" и прочие "абырвалги" — все эти шифровки нагружают лишними подробностями и утомляют при чтении. Хочется видеть максимально декларативный, самодокументированный и приближенный к человеческой речи код, где функции и переменные названы человеческими словами и описывают сущности предметной области.
--
Справедливость выше закона. А человечность выше справедливости.
Re[5]: best practices по поводу констант
От: rg45 СССР  
Дата: 30.01.14 17:52
Оценка: 6 (1)
Здравствуйте, VladFein, Вы писали:

VF>Во-первых, rg45 сравнивал "s_" и "g_", ошибочно утверждая, что между ними нет разницы (разница в видимости за пределами единицы трансляции).


Никаких ошибочных утверждений не было. Согласно стандарту, как старому, так и новому, если переменная объявлена с модификатором const и при этом явно не объявлена как extern, то она получает внутренне связывание (т.е. static).
--
Справедливость выше закона. А человечность выше справедливости.
Re[6]: best practices по поводу констант
От: VladFein США  
Дата: 30.01.14 20:56
Оценка: +1
Здравствуйте, rg45, Вы писали:

R>Никаких ошибочных утверждений не было. Согласно стандарту, как старому, так и новому, если переменная объявлена с модификатором const и при этом явно не объявлена как extern, то она получает внутренне связывание (т.е. static).


Упс... Прошу прощения. Век живи — ...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.