Почему многие вставляют {} везде там где нужно и не нужно? И не студенты, а нормальные программисты на довольно объёмных и известных проектах. Я не так давно работаю и вот, когда в очередном левом open source проекте увидел что-то вроде:
if(actor.valid())
{
actor->doSomething();
}
вместо привычного и употребляемого мной :
if(actor.valid())
actor->doSomething);
стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли?
Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть
Здравствуйте, Аноним, Вы писали:
А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть
Лично я так пишу по двум причинам:
— когда тело цикла или if-а разрастётся, то наличие скобок уменьшит возможность появляния ошибки, когда второй оператор не будет в теле цикла/if-а, а будет после него:
if (stmt)
printf(...);
do_something(); // эта строка выполняется всегда
— опять же в следующий раз не придётся добавлять эти скобочки и это уменьшит количество изменений (и diff в системе управления версиями)
Здравствуйте, Аноним, Вы писали:
А> Почему многие вставляют {} везде там где нужно и не нужно? И не студенты, а нормальные программисты на довольно объёмных и известных проектах. Я не так давно работаю и вот, когда в очередном левом open source проекте увидел что-то вроде:
А>[сcode] А>if(actor.valid()) А>{ А> actor->doSomething(); А>} А>[/сcode]
А>вместо привычного и употребляемого мной : А>[сcode] А>if(actor.valid()) А> actor->doSomething); А>[/сcode]
А>стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли? А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть
ну вообще-то разницы нет между первым и вторым.
я лично при одном операторе не ставлю скобок. но не вижу причин возмущаться если кто-то ставит... личные предпочтения все таки.
--------------
Все, что нас не убивает, делает нас сильнее... меня уж точно...
Здравствуйте, php-coder, Вы писали:
PC>Лично я так пишу по двум причинам: PC>- когда тело цикла или if-а разрастётся, то наличие скобок уменьшит возможность появляния ошибки, когда второй оператор не будет в теле цикла/if-а, а будет после него:
Здравствуйте, Trinity_sch, Вы писали:
T_>ну вообще-то разницы нет между первым и вторым. T_>я лично при одном операторе не ставлю скобок. но не вижу причин возмущаться если кто-то ставит... личные предпочтения все таки.
Разницы понятное дело нет. Но просто я такое вижу при одном операторе едва ли не повсеместно, и в том числе в достаточно известных и популярных проектах типа Open Office, Miranda например. Вот и задумался, может это какое-то неписаное правило хорошего тона и стоит его перенять.
Здравствуйте, php-coder, Вы писали:
PC>Здравствуйте, php-coder, Вы писали:
PC>>Лично я так пишу по двум причинам: PC>>- когда тело цикла или if-а разрастётся, то наличие скобок уменьшит возможность появляния ошибки, когда второй оператор не будет в теле цикла/if-а, а будет после него:
PC>Кстати, я тут вспомнил пример пореалистичнее, из-за которого программа в итоге падала: https://bugzilla.altlinux.org/show_bug.cgi?id=12628#c5
можно и такой пример (мб не очень корректный, но скобки решают плохой макрос):
#define bar one(); two();
if ( foo ) bar;
---
С уважением,
Сергей Мухин
Re: простой вопрос про оформление кода
От:
Аноним
Дата:
19.08.08 11:24
Оценка:
А>вместо привычного и употребляемого мной :
А>
А>if(actor.valid())
А> actor->doSomething);
А>
А>стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли? А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть
Аноним 338 wrote:
> Почему многие вставляют {} везде там где нужно и не нужно? И не > студенты, а нормальные программисты на довольно объёмных и известных > проектах.
Это просто у них паранойя. Других объяснений нет.
Некоторые особо параноидальные еще пишут всякие coding style conventions
и заставляют таким образом вставлять лишние скобки и других, здоровых людей.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: простой вопрос про оформление кода
От:
Аноним
Дата:
19.08.08 11:41
Оценка:
Здравствуйте, MasterZiv, Вы писали:
MZ>Это просто у них паранойя. Других объяснений нет. MZ>Некоторые особо параноидальные еще пишут всякие coding style conventions MZ>и заставляют таким образом вставлять лишние скобки и других, здоровых людей.
В том то вся и проблема, что моё начальстово не настолько параноидально и в нашем "coding style convention" про эту ситуацию ничего не сказано.
Здравствуйте, MasterZiv, Вы писали:
MZ>>Это просто у них паранойя. Других объяснений нет. MZ>>Некоторые особо параноидальные еще пишут всякие coding style conventions MZ>>и заставляют таким образом вставлять лишние скобки и других, здоровых людей.
Здравствуйте, Аноним, Вы писали:
А> Почему многие вставляют {} везде там где нужно и не нужно?
Основные соображения тут уже высказали, добавлю ещё одно: я сам после определённого периода активного прогания на Перле (где скобочки после if/for/… обязательны даже для единичного оператора) стал ловить себя на том, что иногда автоматом ставлю скобки и в JavaScript, и в C/C++.
Здравствуйте, php-coder, Вы писали:
PC>>- когда тело цикла или if-а разрастётся, то
нужные скобки надо будет поставить. И все. Если программист невнимательный — это его недостаток.
PC>Кстати, я тут вспомнил пример пореалистичнее, из-за которого программа в итоге падала: https://bugzilla.altlinux.org/show_bug.cgi?id=12628#c5
case'I':
if (optarg && strcmp(optarg, "(null)"))
if (optarg[0] == '=') optarg++;
flag_int_name = strdup(optarg);
flag_int++;
break;
А вот нехрен писать несколько операций в строчку. Придумали себе странную конвенцию — вот и расплачиваются
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Аноним, Вы писали:
А> Почему многие вставляют {} везде там где нужно и не нужно? И не студенты, а нормальные программисты на довольно объёмных и известных проектах. Я не так давно работаю и вот, когда в очередном левом open source проекте увидел что-то вроде:
Сам так балуюсь. Скажу более. Есть порграммситы которые скобки ставят и без всяких операторов.
{
int a = 10;
int b = 20;
int c = a + b;
ToDo(c);
}
Смысл этих скобок — ограничить область видимости переменных. Ну и вытикающие отсюда последствия.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Здравствуйте, Аноним, Вы писали:
А>стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли? А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть
Лучше считай что стандарт . Уменьшает вероятность появления ошибки.
Наиболее короткое объяснение — обязательно какой-ндь нехороший человек отступы либо табами вместо пробелов, либо наоборот сделает, и форматирование поедет. И ты ничерта не увидишь, что там if, беглым взглядом ничерта не заметишь багу. Соответственно если применять твой стиль, то надо быть сверхвнимательным к отступам.
PS от твоего любимого стиля я целенаправленно отказался через 2 года коммерческой разработки. Раньше тоже возмущался лишней скобке. Щас если увижу что скобки не ставят — хочется зарезать . Скобки не ставят в основном новички, кстати.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Сергей Мухин, Вы писали:
СМ>>можно и такой пример (мб не очень корректный, но скобки решают плохой макрос):
СМ>>...skipped..
CC>Если программист этого не знает — это проблемы программиста.
Если было потерянно много человеко-часов на отлов ошибки, которой можно было избежать просто применив другие Coding conventions -- это таки проблема coding conventions.
Патроны кончаются... Санитары близко... Всем пока!
Здравствуйте, k55, Вы писали:
k55>Здравствуйте, Аноним, Вы писали:
А>> Почему многие вставляют {} везде там где нужно и не нужно? И не студенты, а нормальные программисты на довольно объёмных и известных проектах. Я не так давно работаю и вот, когда в очередном левом open source проекте увидел что-то вроде:
k55>Сам так балуюсь. Скажу более. Есть порграммситы которые скобки ставят и без всяких операторов.
k55>
k55>{
k55> int a = 10;
k55> int b = 20;
k55> int c = a + b;
k55> ToDo(c);
k55>}
k55>
k55>Смысл этих скобок — ограничить область видимости переменных. Ну и вытикающие отсюда последствия.
Как по мне вполне здравая практика. Кстати такие фрагменты кода очень удобно потом рефакторить в функции.
Патроны кончаются... Санитары близко... Всем пока!
Re[2]: простой вопрос про оформление кода
От:
Аноним
Дата:
19.08.08 12:16
Оценка:
Здравствуйте, elmal, Вы писали:
E>PS от твоего любимого стиля я целенаправленно отказался через 2 года коммерческой разработки. Раньше тоже возмущался лишней скобке. Щас если увижу что скобки не ставят — хочется зарезать . Скобки не ставят в основном новички, кстати.
Ну вот благодаря вам и другим ответившим, я 15 минут назад начал активно вставлять в свой код скобки после 7 месяцев коммерческой разработки