простой вопрос про оформление кода
От: Аноним  
Дата: 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 месяцев коммерческой разработки
Re[3]: простой вопрос про оформление кода
От: Сергей Мухин Россия  
Дата: 19.08.08 12:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, elmal, Вы писали:


E>>PS от твоего любимого стиля я целенаправленно отказался через 2 года коммерческой разработки. Раньше тоже возмущался лишней скобке. Щас если увижу что скобки не ставят — хочется зарезать . Скобки не ставят в основном новички, кстати.


А>Ну вот благодаря вам и другим ответившим, я 15 минут назад начал активно вставлять в свой код скобки после 7 месяцев коммерческой разработки



смотрите-ка! еще два месяца до олждения полноценного программиста! а уже скобки ставит как ровно!

---
С уважением,
Сергей Мухин
Re[5]: простой вопрос про оформление кода
От: -MyXa- Россия  
Дата: 19.08.08 12:31
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

[поскипано]

CC>Макрос написан некорректно.

CC>Надо так:

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


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


Так тоже не правильно. Попробуйте:

if (2*2 == 4)
   bar;
else
   ...
Если не поможет, будем действовать током... 600 Вольт (C)
Re[6]: простой вопрос про оформление кода
От: CreatorCray  
Дата: 19.08.08 12:36
Оценка:
Здравствуйте, DarkAurel, Вы писали:

DA>Если было потерянно много человеко-часов на отлов ошибки, которой можно было избежать просто применив другие Coding conventions -- это таки проблема coding conventions.

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

CC>Здравствуйте, DarkAurel, Вы писали:


DA>>Если было потерянно много человеко-часов на отлов ошибки, которой можно было избежать просто применив другие Coding conventions -- это таки проблема coding conventions.

CC>Вообще этого можно было бы избежать если бы программист ЗНАЛ как работают макросы.
CC>Если он этого не знает то как его подушками ни обкладывай — все равно найдет способ продырявить себе что нибудь.

Избегай.

Программирование — работа, которая требуюет держать в голове много фактов. Если есть бесплатное средство, позволяющее уменьшить этот объем, и тем самым, облегчить работу, то странно от этого отказываться.

Я например не помню приоритеты операций (кроме + *) и всегда пишу круглые скобки if ( (X << 1) | mask ) к примеру
---
С уважением,
Сергей Мухин
Re[6]: простой вопрос про оформление кода
От: CreatorCray  
Дата: 19.08.08 12:48
Оценка:
Здравствуйте, -MyXa-, Вы писали:

MX>Так тоже не правильно. Попробуйте:


MX>
MX>if (2*2 == 4)
MX>   bar;
MX>else
MX>   ...
MX>

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

СМ>Программирование — работа, которая требуюет держать в голове много фактов. Если есть бесплатное средство, позволяющее уменьшить этот объем, и тем самым, облегчить работу, то странно от этого отказываться.

Дело в том, что средство это действует не одинаково и не на всех. Кому то помогает, кому то мешает а кому то без разницы.
Так вот не надо лечить им тех, кому это средство только во вред.

СМ>Я например не помню приоритеты операций (кроме + *) и всегда пишу круглые скобки if ( (X << 1) | mask ) к примеру

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

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


СМ>>Программирование — работа, которая требуюет держать в голове много фактов. Если есть бесплатное средство, позволяющее уменьшить этот объем, и тем самым, облегчить работу, то странно от этого отказываться.

CC>Дело в том, что средство это действует не одинаково и не на всех. Кому то помогает, кому то мешает а кому то без разницы.
CC>Так вот не надо лечить им тех, кому это средство только во вред.

каждый сам выбирает ношу, которую ему нести


СМ>>Я например не помню приоритеты операций (кроме + *) и всегда пишу круглые скобки if ( (X << 1) | mask ) к примеру

CC>Тут — аналогично
CC>Но лишние скобки в коде мне только мешают.
CC>за 8 лет коммерческого программирования не припомню случаев, чтобы случались какие либо описываемые тут ужасы типа "программист не поставил скобку и его зохавали баги".

наверно имелось ввиду _скобки_, если не поставить скобку — то точно не будет компилироваться
---
С уважением,
Сергей Мухин
Re[3]: простой вопрос про оформление кода
От: Аноним  
Дата: 19.08.08 13:03
Оценка:
А>>Согласитесь некрасиво?
CC>Да, ужасно!
CC>Надо поправить:
CC>
CC>if(actor.valid() && need_action && (Phase()==MOON_FULL) && (rand()%3==2))
CC>   actor->doSomething();
CC>

CC>Так уже лучше
74 символа в строке, в то время как у нас на конторе принято ограничение в 75 символов. Еще одно условие и переносить придеться
Re[4]: простой вопрос про оформление кода
От: Сергей Мухин Россия  
Дата: 19.08.08 13:04
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>74 символа в строке, в то время как у нас на конторе принято ограничение в 75 символов. Еще одно условие и

переносить придеться

откуда 75?

лучше как в старые добрые времена, когда были перфокарты, 72 или 80
---
С уважением,
Сергей Мухин
Re[5]: простой вопрос про оформление кода
От: Аноним  
Дата: 19.08.08 13:10
Оценка:
А>>74 символа в строке, в то время как у нас на конторе принято ограничение в 75 символов. Еще одно условие и
СМ>переносить придеться
СМ>откуда 75?
СМ>лучше как в старые добрые времена, когда были перфокарты, 72 или 80
Изза того это примерное количество которое можно рассмотреть на горизонтальной половине самого маленького моника в офисе. Потому что в winmerge/araxis при сравнении экран пополам делиться и приходиться длинные строки мышкой мотать при ревью, что зело неудобно.
А терминалы кстати да, тоже фактор. Но не на нашем проекте. Но есть и такие что в vim через SSH приходиться частенько править удаленно на сервере.
Re: простой вопрос про оформление кода
От: GonzoVas Россия  
Дата: 19.08.08 13:13
Оценка: +3
Здравствуйте, Аноним, Вы писали:

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


if (condition1)
  if (condition2)
    doSomething();
else
  doSomething2();


Глупый пример, но всё же.
Re[2]: простой вопрос про оформление кода
От: CreatorCray  
Дата: 19.08.08 13:22
Оценка: +1
Здравствуйте, GonzoVas, Вы писали:

GV>Глупый пример, но всё же.

Дык внутри первого if уже не одна строка — смело берем в фигурные скобки
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: простой вопрос про оформление кода
От: MasterZiv СССР  
Дата: 19.08.08 13:54
Оценка:
Сергей Мухин wrote:

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

>
> Google C++ Style Guide
Ещё какие !
Posted via RSDN NNTP Server 2.1 beta
Re[5]: простой вопрос про оформление кода
От: Сергей Мухин Россия  
Дата: 19.08.08 13:55
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Сергей Мухин wrote:


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

>>
>> Google C++ Style Guide
MZ>Ещё какие !

это скрытая реклама Yandex!
---
С уважением,
Сергей Мухин
Re[3]: простой вопрос про оформление кода
От: MasterZiv СССР  
Дата: 19.08.08 13:55
Оценка:
Аноним 338 wrote:
> В том то вся и проблема, что моё начальстово не настолько параноидально
> и в нашем "coding style convention" про эту ситуацию ничего не сказано.

Тогда пиши, как правильно и как тебе хочется.
И не морочь людям голову дурацкими вопросами. Сам же всё знаешь и
понимаешь, зачем тогда спрашивать ?
Posted via RSDN NNTP Server 2.1 beta
Re[5]: простой вопрос про оформление кода
От: skeptik_  
Дата: 19.08.08 14:47
Оценка: +3
Здравствуйте, Сергей Мухин, Вы писали:

СМ>Здравствуйте, Аноним, Вы писали:


А>>74 символа в строке, в то время как у нас на конторе принято ограничение в 75 символов. Еще одно условие и

СМ>переносить придеться

СМ>откуда 75?


СМ>лучше как в старые добрые времена, когда были перфокарты, 72 или 80


Маразм блин. Как будто ещё кто-то сидит за текстовыми консолями. У меня в VS в строку влазят 227 символов, и я давно уже поднял планку переноса строки до 120 знаков. Недавно пришлось писать с ограничением в 80 -- неудобно. Особенно если использовать нормальные имена, а не криптические сокращения.
Re[3]: простой вопрос про оформление кода
От: elmal  
Дата: 19.08.08 14:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну вот благодаря вам и другим ответившим, я 15 минут назад начал активно вставлять в свой код скобки после 7 месяцев коммерческой разработки

Не думай что такой умный . Меня первые полтора года коммерческой разработки вообще на бизнеслогику на VBScripte поставили, вот это жесть, потому я так поздно и перешел. После такого так полюбил ститическую типизацию и стал очень внимательно относиться к предупреждениям компилятора, и не нарадуюсь, как стало комфортно .
Re: простой вопрос про оформление кода
От: EyeOfHell  
Дата: 19.08.08 15:29
Оценка: 2 (1)

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


Ко всему вышеприведенному добавлю, что длину строк кода любят ограничивать по горизонтали ~80 символами, дабы он без скролла читался в DOS-образных режимах ( консоль там и прочее ). А в процессе эволюции кода строки любят увеличивать свою длину. И чтобы не было потом конструкций вида:

if( m_poTokenFactory->Exists( poCurObject->Token() ) &&
  OBJECT_SOME_TYPE == poCurObject->Type() &&
  poCurObject->Lifetime >
  m_poTokenFactory->MedianTokenLife( poCurObject->Token() ) )
    poCurObject->Transmute();


Пишут в самом начале:

if( poCurObject->Lifetime > MAX_LIFE_TIME )
{
  poCurObject->Transmute();
}


В первом примере нет ничего плохого — но он плохо читается. А когда кода много и к нему возвращаются через некоторое время, то плохо читаемый код может породить баги при изменении.

Тут есть тонкий момент — почему бы не писать вначале без скобок, а если строка станет длинной — не дописывать скобки? Считается, что когда в большом коде через некоторое время дописывают скобки — то легко поставить их не в том месте.

Например, есть код:

if( condition a )
  if ( condition b )
    some work;
  else
    another work;


Вернулись мы к нему через... ммм... год. Проект так под сотню тысячь строк, в паре десятков мест надо поменять. Аккуратно меняем. Первое место, второе... К концу первого дестка глаз чуток замыливается. Мы же не роботы бездушные . А тут condition a шибко выросло на три строки. Ну и проставили скобки для удобочитаемости:

if( condition a
    and another condition
    and some more condition )
{
  if( condition b )
    some work;
}
else
  another work;


И дальше пошли код менять. А потом тестировщики день багу локализовали и программисты ее пару дней меняли .

Вот и страхуются заранее, скобки проставляют

Естественно, если код маленький и понятный — то со скобками фиг ошибешся и считается он просто. Но со временем приходит понимаение что код в процессе работы меняется и иногда приходится возвращаться к коду, написанному год назад, который уже слабо помнишь. Или к чужому коду. Вот тут-то и оказывается, что незначительное время на строгую простановку скобок везде будет меньше, если из-за их отсутствия допускается баг-очепятка, который потом тестерам повторять а программисту искать и править — пару дней .
Re[6]: простой вопрос про оформление кода
От: Аноним  
Дата: 19.08.08 23:04
Оценка:
СМ>>лучше как в старые добрые времена, когда были перфокарты, 72 или 80
_>Маразм блин. Как будто ещё кто-то сидит за текстовыми консолями.
Вы просто не пишете приложения представляющие собой набор java скриптов работающих на специфичном UNIX сервере зашитом в железку, доступ к которой только по ssh имеется. + бинарники под разные оси которые на этот же сервер заливать надо с конфигами на нем же. Само собой все в дереве проекта.

_>У меня в VS в строку влазят 227 символов, и я давно уже поднял планку переноса строки до 120 знаков. Недавно пришлось писать с ограничением в 80 -- неудобно. Особенно если использовать нормальные имена, а не криптические сокращения.

А вы version control'ом пользуетесь? Изменения в коде между ревизиями чем смотрите если по быстрому надо? Мы — winmerg'ем и araxis'ом. В них экран делится на 2 части по вертикали. Слева — старая версия. Справа — новая. И на моем рабочем ноуте уж извините не 22 дюйма экран, а всего 15 с хреном.
Re[7]: простой вопрос про оформление кода
От: skeptik_  
Дата: 19.08.08 23:42
Оценка:
Здравствуйте, Аноним, Вы писали:

СМ>>>лучше как в старые добрые времена, когда были перфокарты, 72 или 80

_>>Маразм блин. Как будто ещё кто-то сидит за текстовыми консолями.
А>Вы просто не пишете приложения представляющие собой набор java скриптов работающих на специфичном UNIX сервере зашитом в железку, доступ к которой только по ssh имеется. + бинарники под разные оси которые на этот же сервер заливать надо с конфигами на нем же. Само собой все в дереве проекта.
А скачать, отредактировать и залить обратно нельзя?

_>>У меня в VS в строку влазят 227 символов, и я давно уже поднял планку переноса строки до 120 знаков. Недавно пришлось писать с ограничением в 80 -- неудобно. Особенно если использовать нормальные имена, а не криптические сокращения.

А>А вы version control'ом пользуетесь? Изменения в коде между ревизиями чем смотрите если по быстрому надо? Мы — winmerg'ем и araxis'ом. В них экран делится на 2 части по вертикали. Слева — старая версия. Справа — новая. И на моем рабочем ноуте уж извините не 22 дюйма экран, а всего 15 с хреном.
Пользуюсь. Большая часть строк в полэкрана таки влазит. Да и вообще, мне кажется, что если у вас много конфликтов, то с организацией работы что-то не то...

ЗЫ У меня на ноуте разрешение 1920х1200.
Re[6]: простой вопрос про оформление кода
От: landerhigh Пират  
Дата: 20.08.08 01:24
Оценка:
Здравствуйте, skeptik_, Вы писали:

_>Маразм блин. Как будто ещё кто-то сидит за текстовыми консолями. У меня в VS в строку влазят 227 символов, и я давно уже поднял планку переноса строки до 120 знаков. Недавно пришлось писать с ограничением в 80 -- неудобно. Особенно если использовать нормальные имена, а не криптические сокращения.

Наиболее комфортная для восприятия ширина строки составляет, если мне не изменяет память, 66 символов.
Re[7]: простой вопрос про оформление кода
От: skeptik_  
Дата: 20.08.08 01:53
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, skeptik_, Вы писали:


_>>Маразм блин. Как будто ещё кто-то сидит за текстовыми консолями. У меня в VS в строку влазят 227 символов, и я давно уже поднял планку переноса строки до 120 знаков. Недавно пришлось писать с ограничением в 80 -- неудобно. Особенно если использовать нормальные имена, а не криптические сокращения.

L>Наиболее комфортная для восприятия ширина строки составляет, если мне не изменяет память, 66 символов.
Это зависит от длины имён. Имена стали длиннее, так что старые исследования не канают.
Re[8]: простой вопрос про оформление кода
От: landerhigh Пират  
Дата: 20.08.08 02:17
Оценка:
Здравствуйте, skeptik_, Вы писали:

_>>>Маразм блин. Как будто ещё кто-то сидит за текстовыми консолями. У меня в VS в строку влазят 227 символов, и я давно уже поднял планку переноса строки до 120 знаков. Недавно пришлось писать с ограничением в 80 -- неудобно. Особенно если использовать нормальные имена, а не криптические сокращения.

L>>Наиболее комфортная для восприятия ширина строки составляет, если мне не изменяет память, 66 символов.
_>Это зависит от длины имён. Имена стали длиннее, так что старые исследования не канают.
Не путай теплое с мягким.
Это зависит от /dev/brains. От физиологии. Видел когда-нибудь газету с колонками во всю ширину разворота? А знаешь почему? Именно потому, что короткие строчки читать гораздо легче.
Слишком длинные имена, кстати, нифига не добавляют читаемости коду.
Re[2]: простой вопрос про оформление кода
От: CreatorCray  
Дата: 20.08.08 07:54
Оценка:
Здравствуйте, EyeOfHell, Вы писали:

EOH>Например, есть код:


EOH>
EOH>if( condition a )
EOH>  if ( condition b )
EOH>    some work;
EOH>  else
EOH>    another work;
EOH>


В этом коде скобки надо было ставить сразу.
ИМХО не ставить скобки можно только если в блоке одна строка и одна грубо говоря операция. И никаких operator,

if (blah)
    foo;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: простой вопрос про оформление кода
От: Аноним  
Дата: 20.08.08 09:04
Оценка: +1
СМ>>>>лучше как в старые добрые времена, когда были перфокарты, 72 или 80
_>>>Маразм блин. Как будто ещё кто-то сидит за текстовыми консолями.
А>>Вы просто не пишете приложения представляющие собой набор java скриптов работающих на специфичном UNIX сервере зашитом в железку, доступ к которой только по ssh имеется. + бинарники под разные оси которые на этот же сервер заливать надо с конфигами на нем же. Само собой все в дереве проекта.
_>А скачать, отредактировать и залить обратно нельзя?
Долго. Вы пользовались когда нить scp? Весьма геморно чтобы напримр в скрипте поменять пару циферок.

_>>>У меня в VS в строку влазят 227 символов, и я давно уже поднял планку переноса строки до 120 знаков. Недавно пришлось писать с ограничением в 80 -- неудобно. Особенно если использовать нормальные имена, а не криптические сокращения.

А>>А вы version control'ом пользуетесь? Изменения в коде между ревизиями чем смотрите если по быстрому надо? Мы — winmerg'ем и araxis'ом. В них экран делится на 2 части по вертикали. Слева — старая версия. Справа — новая. И на моем рабочем ноуте уж извините не 22 дюйма экран, а всего 15 с хреном.
_>Пользуюсь. Большая часть строк в полэкрана таки влазит. Да и вообще, мне кажется, что если у вас много конфликтов, то с организацией работы что-то не то...
_>ЗЫ У меня на ноуте разрешение 1920х1200.
Молодец, возьмите с полки пирожок. У меня 1280х800. А еще бывают другие люди у которых ноуты воще мегапортабельные и все хотят удобно работать с кодом.
Re[3]: простой вопрос про оформление кода
От: ilvi Россия  
Дата: 20.08.08 09:59
Оценка:
k55>>Сам так балуюсь. Скажу более. Есть порграммситы которые скобки ставят и без всяких операторов.

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


k55>>Смысл этих скобок — ограничить область видимости переменных. Ну и вытикающие отсюда последствия.


DA>Как по мне вполне здравая практика. Кстати такие фрагменты кода очень удобно потом рефакторить в функции.


Тоже таким грешен, особенно в случае использование оберток над системными примитивами. Например, работа с критическими секциями:

....
{
    HolderCriticalSection lock(CriticalSection);
    iGlobalReplProgress = iJustCalculatedProgress;
    strMsg = strDescriptionOfCurrentPhase;
}
...
Re[8]: простой вопрос про оформление кода
От: drol  
Дата: 20.08.08 10:28
Оценка:
Здравствуйте, skeptik_, Вы писали:

_>ЗЫ У меня на ноуте разрешение 1920х1200.


На моём ноуте тоже большое разрешение. Только вот буковки маленькие, бо все эти мегапиксели запиханы в 15.4"
Так что я всё равно предпочитаю свой домашний монитор в 24"
*Сейчас обдумываю переезд на 42" Full HD ЖК-телевизор... или на два сразу...
Re[9]: простой вопрос про оформление кода
От: skeptik_  
Дата: 20.08.08 11:39
Оценка:
Здравствуйте, drol, Вы писали:

D>Здравствуйте, skeptik_, Вы писали:


_>>ЗЫ У меня на ноуте разрешение 1920х1200.


D>На моём ноуте тоже большое разрешение. Только вот буковки маленькие, бо все эти мегапиксели запиханы в 15.4"

D>Так что я всё равно предпочитаю свой домашний монитор в 24"
D>*Сейчас обдумываю переезд на 42" Full HD ЖК-телевизор... или на два сразу...
Дык, стационарно я ещё лет 8 назад с двумя мониторами работал. В одном код, в другом всё остальное.
Re[3]: простой вопрос про оформление кода
От: EyeOfHell  
Дата: 20.08.08 12:57
Оценка:

В этом коде скобки надо было ставить сразу.
ИМХО не ставить скобки можно только если в блоке одна строка и одна грубо говоря операция.


Согласен с Вами. Только есть нюанс — код меняется со временем. И никто не положит яйца под паровоз, что if( a ) b(); никогда не вырастет до приличных размеров. Именно поэтому стараются страховаться заранее — чтобы сэкономленные на простановку скобок секунды потом не вылились в дни багфиксинга. Как показывает опыт, отлаживается код дольше, чем пишется. Вот с этой будующей отладкой всеми правдами и неправдами стараются сражаться .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.