powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Расстановка фигурных скобок.
34 сообщений из 34, показаны все 2 страниц
Расстановка фигурных скобок.
    #39027067
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надеюсь я не начинаю холивар.)
Какой способ расстановки фигурных скобок ограничивающих блок кода вы считаете предпочтительным.
Стиль Кренигана-Ритчи:
Код: plaintext
1.
2.
3.
4.
5.
foo() {
    
    ........

}  



или стиль Алмена:
Код: plaintext
1.
2.
3.
4.
5.
6.
foo() 
{
    
    ........

}  



Мне больше нравится стиль Алмена, так как он чётче обозначает границы.
Границы блока надо всегда искать в первом столбце текста.
В первом же варианте конец блока виден хорошо, а в поисках начала надо шарить по всему файлу.
Однако, в книге которую я сейчас читаю написано, что стиль Кернигана-Ритчи является единственно верным.
Вот так выделено курсивом и никаких комментариев.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39027086
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETОднако, в книге которую я сейчас читаю написано, что стиль Кернигана-Ритчи является единственно верным.


Естественно, это неправда.
Потому что единственно верным является стиль Алмена .
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39027098
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравни
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if(...)
{
  ...
}
else
{
 ...
 while(...)
 {
    ...
 }
}


и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if(...) {
  ...
} else {
 ...
 while(...) {
    ...
 }
}


Лично я предпочитаю видеть больше кода чем скобок, т.е. стиль Кренигана-Ритчи. Экран не резиновый и не стоит занимать место строками с одной скобкой, т.к. в итоге получается что половина строк кода - скобки.
Хотя для функций использую стиль Алмена.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39027532
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новая скобка на новой строке - надо заботиться о тех, кто будет читать код.. а так он проще воспринимается
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39027537
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какую книгу вы читаете ? Что значит единственно верным ? По какому критерию ? Корректность синтаксического или лексического анализа? В таком случае совершенно безразлично где и как вы закрываете и открываете блок инструкций. Читабельность кода ? На вкус и цвет товарищей нет, когда-то удобней так, а когда-то иначе
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39027723
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NET,
в конечном итоге прав тот кто платит. Т.е. согласно внутренним решениям конторы.
Если идёт речь гипотетически - то если не надо чтоб кто то читал Ваш код - то как угодно. Хоть в прямоугольные блоки код сводите(есть и такие любители). Если нужно снизить затраты на поддержку кода(типа чтоб любая "домохозяйка" поняла) то тогда с новой строчки(имхо конечно-же) глаз воспринимает легче. Но для профи параллельно, т.к. приходится всякое разгребать досконально.
Как писать так и читать.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39027781
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if(...) {
  ...
} else {
 ...
 while(...) {
    ...
 }
}


Лично я предпочитаю видеть больше кода чем скобок, т.е. стиль Кренигана-Ритчи. Экран не резиновый и не стоит занимать место строками с одной скобкой, т.к. в итоге получается что половина строк кода - скобки.
Хотя для функций использую стиль Алмена.
Когда-то давным давно моя первая учительница по программированию говорила "бейте перфокарту до последнего символа". И это был PL/1....... Я так подозреваю партия зеленых началась с нее.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028119
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YesSqlDima T
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if(...) {
  ...
} else {
 ...
 while(...) {
    ...
 }
}


Лично я предпочитаю видеть больше кода чем скобок, т.е. стиль Кренигана-Ритчи. Экран не резиновый и не стоит занимать место строками с одной скобкой, т.к. в итоге получается что половина строк кода - скобки.
Хотя для функций использую стиль Алмена.
Когда-то давным давно моя первая учительница по программированию говорила "бейте перфокарту до последнего символа". И это был PL/1....... Я так подозреваю партия зеленых началась с нее.
Да я тоже думаю что смысл этого стиля в экономии символов на переводе строки.
Чтобы программа помещалась на кассету.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028121
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryКакую книгу вы читаете ?
Павловская, Щупак. "Структурное программирование C/C++. Практикум."
Книга 2005 года. Купил давно, хотел программировать на C++.
Потом подсел на .NET, вот теперь пытаюсь вернуться к корням.
Программирование на .NET без знания C/C++, по моему, развивает в человеке веру в чудеса.
А это рано или поздно приводит к проблемам как в работе так и вообще по жизни.
Не на каждую задачу найдётся "заклинание".
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028122
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NET,

Вижуал студия форматирует по Альмену (Ctrl-k,Ctrl-d). А это самое главное.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028128
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функции и классы:

Код: plaintext
1.
2.
3.
int main() 
{
}



составные операторы:
Код: plaintext
1.
2.
3.
4.
if (x) {
}
else {
}
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028133
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyсоставные операторы:
Код: plaintext
1.
2.
3.
4.
if (x) {
}
else {
}

А если в if сложное выражение на четыре строки?
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028137
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftА если в if сложное выражение на четыре строки?
В любом случае
Код: plaintext
1.
) {
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028143
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymiksoftА если в if сложное выражение на четыре строки?
В любом случае
Код: plaintext
1.
) {

И как тогда отличать, где выражение в if, а где код пошел?
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028163
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftИ как тогда отличать, где выражение в if, а где код пошел?
Код: plaintext
1.
2.
3.
4.
5.
Да все хорошо видно.
if (x1
    && x2) {
    yy;
}
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39028165
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETДа я тоже думаю что смысл этого стиля в экономии символов на переводе строки.
Чтобы программа помещалась на кассету.
При чем тут касета?
Пол экрана кода (а то и больше) на Си зачастую равносильно одной команде высокоуровнего языка. В итоге имеешь 3-4 экрана для реализации элементарной операции. При отладке средний палец опухает от кручения колесика на мышке и в глазах рябить начинает от постоянного листания вверх-вниз.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029599
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, лет несколько назад один перец строил ультра-короткий язык. Чем оно закончилось - ХЗ.
Но можешь погуглить здесь. По выделенному. Хехе...
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029755
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDima T, лет несколько назад один перец строил ультра-короткий язык. Чем оно закончилось - ХЗ.
Но можешь погуглить здесь. По выделенному. Хехе...
Ты про стебелек? Не знаю, не читал. Я про Visual FoxPro, реально ультракороткий язык, пишу на нем 20 лет, все это время MS его хоронит. Думал похоронит насильным вводом x64, но похоже MS осталось жить еще меньше. Похоронят ARM'ы.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029766
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЛично я предпочитаю видеть больше кода чем скобок, т.е. стиль Кренигана-Ритчи. Экран не резиновый и не стоит занимать место строками с одной скобкой, т.к. в итоге получается что половина строк кода - скобки.

Обычный стиль:
Код: plaintext
1.
2.
3.
4.
5.
6.
        typedef struct
        {
                float v2;
                float v3;
                float fac;
        } goertzel_state_t;


У меня:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        typedef struct {

         float  v2;
         float  v3;
         float  fac;

        } goertzel_state_t;



Вот еще пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        class __EXPORT Info
        {
        public:
                Format format;
                Encoding encoding;
                unsigned long rate;
                unsigned long bitrate;
                unsigned order;
                unsigned framesize, framecount;
                timeout_t framing;
                char *annotation;

                Info();
                void clear(void);
                void set(void);
                void setFraming(timeout_t frame);
        };



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
        class __EXPORT Info {

        public:

         Format         format;
         Encoding       encoding;
         unsigned long  rate;
         unsigned long  bitrate;
         unsigned       order;
         unsigned       framesize, 
                        framecount;
         timeout_t      framing;
         char           *annotation;

         Info();
         void clear( void );
         void set( void );
         void setFraming( timeout_t  frame );

        };
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029772
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так недалеко и в Python скатиться. :)
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029775
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012У меня:
В *.h все замечательно, ты свои *.cpp покажи
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029776
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ про Visual FoxPro, реально ультракороткий язык, пишу на нем 20 лет, все это время MS его хоронит.
99% если не больше задач типа "финансовых", "бухучет" ... с использованием Visual FoxPro делаются
легко, быстро, просто, ... /если руки не кривые/.
Хотя C# в какой-то мере и позиционировался /при сравнении с Visual Foxpro/ как язык, который воспринял
все лучшее и дополнил многое недостающее, все же на мой взгляд для класса задач перечисленных выше без
этого "лучшего" запросто можно обойтись.
И код без всего этого "лучшего" пишется быстрее и даже осмелюсь сказать "много чище".
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029778
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012 99% если не больше задач типа "финансовых", "бухучет" ... с использованием Visual FoxPro делаются
легко, быстро, просто, ... /если руки не кривые/.
Хотя C# в какой-то мере и позиционировался /при сравнении с Visual Foxpro/ как язык, который воспринял
все лучшее и дополнил многое недостающее,

Как можно их сравнивать ? Fox -- 4GL, С# -- 3GL. Естественно, Fox мощнее гораздо.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029779
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivFox мощнее гораздо.
в киловаттах или попугаях?
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029780
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ *.h все замечательно, ты свои *.cpp покажи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
// --- Если имя stream не задано
//
 if  ( SysStringLen( NameStream ) == 0 ) {

  m_CFile.Attach( NameFile );

  bRet = ( m_CFile.m_Ok == TRUE ? 1 : 0 );

  if  ( m_CFile.m_Ok == TRUE )  {

   hr              = S_OK;
   ResValue.dblVal = 1;
   *bResult        = ResValue;

  } else {
   hr              = S_FALSE;
   ResValue.dblVal = 0;
   *bResult        = ResValue;
  }

  return  hr;

 }                                                         // if  ( SysStringLen( NameStream ) == 0 ) {
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029783
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ппц. всех порвал.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029790
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще примеры к стилю оформления кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// ---  Default constructor
//
CDiagReport::CDiagReport() {

 m_pIIStorage            = NULL;
 m_pIIStream             = NULL;
 m_pIIPropertySetStorage = NULL;
 m_pIIPropertyStorage    = NULL;
 m_pII1C                 = NULL;

}                                                          // IFACEMETHODIMP CDiagReport::CDiagReport(



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
// --------------------------------------------------------
// --- Save data stream to file
//
IFACEMETHODIMP  AIStream::SaveToFile(
 _In_  INT      IndexSourceStream,
 _In_  ULONG    cntBytes,
 _In_  ULONG    cntOffset,
 _In_  BSTR     NameFile,
 _Out_ VARIANT  *bResult
) {
/*

 IndexSourceStream      Index source item in m_vIStream

 cntBytes               The number of bytes of data of stream save in file /if == 0, то сохраняются все байты/

 cntOffset              Количество байт для смещения относительно начала файла 

 NameFile               Name file в который производится запись заданного числа байт, взятых из stream

 bResult                Флаг, содержащий результат выполнения функции:
                         ==  .T.  -  все Ok

 Return:

*/

 HRESULT  hr   = S_OK;
 BOOL     bRet = TRUE;

 VARIANT  ResValue;                                        // Result value field

 ResValue.vt     = VT_R8;
 ResValue.dblVal = 0;

 CString   csNameFile( NameFile );

 bRet = (BOOL) m_vIStream[ IndexSourceStream ]->SaveToFile(
  cntBytes,                                                // The number of bytes of data of stream save in file /if == 0, то сохраняются все байты/
  cntOffset,                                               //           
  csNameFile                                               // Name file
 );

 if  ( bRet == FALSE ) {
  *bResult = ResValue;
  hr       = S_FALSE;
 }

 ResValue.dblVal = 1;
 *bResult        = ResValue;

 return  hr;

}                                                          // IFACEMETHODIMP  AIStream::SaveToFile( ...
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39029903
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О "знаниях", "стандартах" ... и др. "учености" ...

При коллективизации /тридцатые года/ повсеместно из сел направляли на курсы трактористов молодых парней.
Курсы длились 2- месяца и на них затрагивались темы и устройства трактора и ...
И вот на экзаменах один молодой новоиспеченный тракторист говорит экзаменующему -
"Все понимаю. Вот только одного не понимаю. Куда же в нем кобылу впрягать?"
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39061651
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос то оказывается и правда холиварный Eckel B., Allison Ch. в "Thinking in C++" пишут,
что это один из ключевых вопросов, в стиле форматирования.
Они пишут, что надо размещать { на той же строке.

Потому что так сразу понятно, что это

Код: plaintext
1.
int foo();



объявление, а это

Код: plaintext
1.
int foo() { 



определение.

Ну и пишут, что такой стиль позволяет разместить больше строк на одной странице/слайде,
что особенно важно при проведении презентаций.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39061691
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Dima TВ *.h все замечательно, ты свои *.cpp покажи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
// --- Если имя stream не задано
//
 if  ( SysStringLen( NameStream ) == 0 ) {

  m_CFile.Attach( NameFile );

  bRet = ( m_CFile.m_Ok == TRUE ? 1 : 0 );

  if  ( m_CFile.m_Ok == TRUE )  {

   hr              = S_OK;
   ResValue.dblVal = 1;
   *bResult        = ResValue;

  } else {
   hr              = S_FALSE;
   ResValue.dblVal = 0;
   *bResult        = ResValue;
  }

  return  hr;

 }                                                         // if  ( SysStringLen( NameStream ) == 0 ) {


Размещая скобку { *не* с новой строки, вы тоже хотите добиться экономии места на экране? Но посмотрите сколько у вас просто пустых строчек. Даже после return. Вот так занимает столько же строчек:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
if  ( SysStringLen( NameStream ) == 0 )
{
    m_CFile.Attach( NameFile );

    bRet = ( m_CFile.m_Ok == TRUE ? 1 : 0 );

    if  ( m_CFile.m_Ok == TRUE )
    {
        hr              = S_OK;
        ResValue.dblVal = 1;
        *bResult        = ResValue;
    }
    else
    {
        hr              = S_FALSE;
        ResValue.dblVal = 0;
        *bResult        = ResValue;
    }

    return  hr;
}



Но, ИМХО, второй вариант *гораздо* нагляднее — гораздо лучше видно где начинается блок кода, а где заканчивается (требуется движение глаз только в одном строго заданном направлении и совершенно однозначно). Странно даже спорить об этом.

ИМХО, уплотнение кода больше вредит. Если функция не влезает в экран (ну два экрана) — разбей её на две функции. Почти наверняка получится красивее с точки зрения структуры кода программы.

PS: Плюс отступы в четыре пробела улучшают читабельность, ИМХО.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39061705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сабжу мало кто из мемберов будет определять стиль собственноручно.
Скорее всего вы унаследуете способ который приняли в вашей коменде.

Из практики.. современные IDE по дефолту форматируют сорцы в
варианте №1. С компактными строками.

P.S. Великий сатирик своего времени Джонатан Свифт тоже писал
о холиваре. Или о войне мелких коротышек которые не договорились
о том с какой стороны разбивать яйцо.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39061856
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravPS: Плюс отступы в четыре пробела улучшают читабельность, ИМХО.Не буду возражать если кто нибудь код будете оформлять так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if(SysStringLen(NameStream)==0){
 m_CFile.Attach(NameFile);
 bRet=(m_CFile.m_Ok==TRUE?1:0);
if(m_CFile.m_Ok==TRUE){
 hr=S_OK;
 ResValue.dblVal=1;
 *bResult=ResValue;
}else{
 hr=S_FALSE;
 ResValue.dblVal=0;
 *bResult=ResValue;}
return  hr;}



Большой плюс от этого - код представлен меньшим количеством строк ...

PS: А в целом:
"На вкус и цвет товарищей нет"
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39061873
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETВопрос то оказывается и правда холиварный Eckel B., Allison Ch. в "Thinking in C++" пишут...прочитайте уже Совершенный код от Макконнелла, и холивар закончится сразу.
...
Рейтинг: 0 / 0
Расстановка фигурных скобок.
    #39061903
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо сабжу мало кто из мемберов будет определять стиль собственноручно.
Скорее всего вы унаследуете способ который приняли в вашей коменде.

Из практики.. современные IDE по дефолту форматируют сорцы в
варианте №1. С компактными строками.

P.S. Великий сатирик своего времени Джонатан Свифт тоже писал
о холиваре. Или о войне мелких коротышек которые не договорились
о том с какой стороны разбивать яйцо.
Раз с фигурными скобками разобрались, то пора поговорить про ограничение в 80-т символов на строку кода. (шутка!)
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Расстановка фигурных скобок.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]