простой вопрос про оформление кода
От: Аноним  
Дата: 19.08.08 11:00
Оценка:
Почему многие вставляют {} везде там где нужно и не нужно? И не студенты, а нормальные программисты на довольно объёмных и известных проектах. Я не так давно работаю и вот, когда в очередном левом open source проекте увидел что-то вроде:

if(actor.valid())
{
   actor->doSomething();
}

вместо привычного и употребляемого мной :

if(actor.valid())
   actor->doSomething);

стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли?
Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть
Re: простой вопрос про оформление кода
От: php-coder Чехия http://slava-semushin.blogspot.com
Дата: 19.08.08 11:07
Оценка: +3
Здравствуйте, Аноним, Вы писали:

А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть


Лично я так пишу по двум причинам:
— когда тело цикла или if-а разрастётся, то наличие скобок уменьшит возможность появляния ошибки, когда второй оператор не будет в теле цикла/if-а, а будет после него:

if (stmt)
    printf(...);
    do_something(); // эта строка выполняется всегда


— опять же в следующий раз не придётся добавлять эти скобочки и это уменьшит количество изменений (и diff в системе управления версиями)
Re: простой вопрос про оформление кода
От: Trinity_sch Германия http://trinity-sch.livejournal.com/
Дата: 19.08.08 11:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Почему многие вставляют {} везде там где нужно и не нужно? И не студенты, а нормальные программисты на довольно объёмных и известных проектах. Я не так давно работаю и вот, когда в очередном левом open source проекте увидел что-то вроде:


А>[сcode]

А>if(actor.valid())
А>{
А> actor->doSomething();
А>}
А>[/сcode]

А>вместо привычного и употребляемого мной :

А>[сcode]
А>if(actor.valid())
А> actor->doSomething);
А>[/сcode]

А>стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли?

А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть

ну вообще-то разницы нет между первым и вторым.
я лично при одном операторе не ставлю скобок. но не вижу причин возмущаться если кто-то ставит... личные предпочтения все таки.
--------------
Все, что нас не убивает, делает нас сильнее... меня уж точно...
Re[2]: простой вопрос про оформление кода
От: php-coder Чехия http://slava-semushin.blogspot.com
Дата: 19.08.08 11:10
Оценка:
Здравствуйте, php-coder, Вы писали:

PC>Лично я так пишу по двум причинам:

PC>- когда тело цикла или if-а разрастётся, то наличие скобок уменьшит возможность появляния ошибки, когда второй оператор не будет в теле цикла/if-а, а будет после него:

Кстати, я тут вспомнил пример пореалистичнее, из-за которого программа в итоге падала: https://bugzilla.altlinux.org/show_bug.cgi?id=12628#c5
Re[2]: простой вопрос про оформление кода
От: Аноним  
Дата: 19.08.08 11:14
Оценка:
Здравствуйте, Trinity_sch, Вы писали:

T_>ну вообще-то разницы нет между первым и вторым.

T_>я лично при одном операторе не ставлю скобок. но не вижу причин возмущаться если кто-то ставит... личные предпочтения все таки.

Разницы понятное дело нет. Но просто я такое вижу при одном операторе едва ли не повсеместно, и в том числе в достаточно известных и популярных проектах типа Open Office, Miranda например. Вот и задумался, может это какое-то неписаное правило хорошего тона и стоит его перенять.
Re[3]: простой вопрос про оформление кода
От: Сергей Мухин Россия  
Дата: 19.08.08 11:20
Оценка:
Здравствуйте, 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);
А>

А>стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли?
А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть

Потому что иногда бывает так:
if(actor.valid() && need_action &&
   moon->Phase()==MOON_FULL && rand()%3==2)
   actor->doSomething();


Согласитесь некрасиво?

Или еще так
if(actor.valid() && need_action &&
   moon->Phase()==MOON_FULL && rand()%3==2)
   {
   actor->doSomething();
   domSomethingElse();
   }

Тут вообще без скобочек никак.

Просто из соображений единобразия.
Re: простой вопрос про оформление кода
От: MasterZiv СССР  
Дата: 19.08.08 11:34
Оценка: +3 -3 :))) :)))
Аноним 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" про эту ситуацию ничего не сказано.
Re[3]: простой вопрос про оформление кода
От: Сергей Мухин Россия  
Дата: 19.08.08 11:48
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>>Это просто у них паранойя. Других объяснений нет.

MZ>>Некоторые особо параноидальные еще пишут всякие coding style conventions
MZ>>и заставляют таким образом вставлять лишние скобки и других, здоровых людей.

а эти параноики?

Google C++ Style Guide
---
С уважением,
Сергей Мухин
Re: простой вопрос про оформление кода
От: Константин http://flint-inc.ru/
Дата: 19.08.08 11:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Почему многие вставляют {} везде там где нужно и не нужно?


Основные соображения тут уже высказали, добавлю ещё одно: я сам после определённого периода активного прогания на Перле (где скобочки после if/for/… обязательны даже для единичного оператора) стал ловить себя на том, что иногда автоматом ставлю скобки и в JavaScript, и в C/C++.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: простой вопрос про оформление кода
От: CreatorCray  
Дата: 19.08.08 11:58
Оценка: +1 -1
Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока
Re[4]: простой вопрос про оформление кода
От: CreatorCray  
Дата: 19.08.08 11:58
Оценка: +1 -1
Здравствуйте, Сергей Мухин, Вы писали:

СМ>можно и такой пример (мб не очень корректный, но скобки решают плохой макрос):


СМ>
СМ>#define bar one(); two();

СМ>if ( foo ) bar;
СМ>


Макрос написан некорректно.
Надо так:

#define bar {one(); two();}


Если программист этого не знает — это проблемы программиста.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: простой вопрос про оформление кода
От: CreatorCray  
Дата: 19.08.08 11:58
Оценка: 1 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Потому что иногда бывает так:

А>
А>if(actor.valid() && need_action &&
   moon->>Phase()==MOON_FULL && rand()%3==2)
А>   actor->doSomething();
А>


А>Согласитесь некрасиво?

Да, ужасно!
Надо поправить:
if(actor.valid() && need_action && (Phase()==MOON_FULL) && (rand()%3==2))
   actor->doSomething();

Так уже лучше
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: простой вопрос про оформление кода
От: Сергей Мухин Россия  
Дата: 19.08.08 12:00
Оценка:
Здравствуйте, CreatorCray, Вы писали:


CC>Если программист этого не знает — это проблемы программиста.


Если бы не было ошибок программиста, не было бы вообще программистов!
---
С уважением,
Сергей Мухин
Re: простой вопрос про оформление кода
От: k55 Ниоткуда  
Дата: 19.08.08 12:03
Оценка: +4
Здравствуйте, Аноним, Вы писали:

А> Почему многие вставляют {} везде там где нужно и не нужно? И не студенты, а нормальные программисты на довольно объёмных и известных проектах. Я не так давно работаю и вот, когда в очередном левом open source проекте увидел что-то вроде:


Сам так балуюсь. Скажу более. Есть порграммситы которые скобки ставят и без всяких операторов.

{
  int a = 10;
  int b = 20;
  int c = a + b;
  ToDo(c);
}


Смысл этих скобок — ограничить область видимости переменных. Ну и вытикающие отсюда последствия.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Re: простой вопрос про оформление кода
От: elmal  
Дата: 19.08.08 12:10
Оценка: +3 -1 :)
Здравствуйте, Аноним, Вы писали:

А>стало вдруг интересно. Это что какой-то неписаный общепринятый стандарт что-ли?

А>Насколько я знаю общих рекомендаций к стилю в С++ нет, или есть? Поделитесь сцылкой плиз если оно есть
Лучше считай что стандарт . Уменьшает вероятность появления ошибки.
Наиболее короткое объяснение — обязательно какой-ндь нехороший человек отступы либо табами вместо пробелов, либо наоборот сделает, и форматирование поедет. И ты ничерта не увидишь, что там if, беглым взглядом ничерта не заметишь багу. Соответственно если применять твой стиль, то надо быть сверхвнимательным к отступам.

PS от твоего любимого стиля я целенаправленно отказался через 2 года коммерческой разработки. Раньше тоже возмущался лишней скобке. Щас если увижу что скобки не ставят — хочется зарезать . Скобки не ставят в основном новички, кстати.
Re[5]: простой вопрос про оформление кода
От: DarkAurel Украина http://dark-aurel.livejournal.com
Дата: 19.08.08 12:11
Оценка: +2
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Сергей Мухин, Вы писали:


СМ>>можно и такой пример (мб не очень корректный, но скобки решают плохой макрос):


СМ>>...skipped..


CC>Если программист этого не знает — это проблемы программиста.


Если было потерянно много человеко-часов на отлов ошибки, которой можно было избежать просто применив другие Coding conventions -- это таки проблема coding conventions.
Патроны кончаются... Санитары близко... Всем пока!
Re[2]: простой вопрос про оформление кода
От: DarkAurel Украина http://dark-aurel.livejournal.com
Дата: 19.08.08 12:15
Оценка: +3
Здравствуйте, 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 месяцев коммерческой разработки
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.