Написание условий

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Maksim Neimerik
30615
Maksim Neimerik  
Привет! Расскажите как кто пишет условия, тоесть так:
if(uslov1)
{
   if(uslov2)
   {
      if(uslov3)
      {
         if(uslov4)
         {
            Run;
         }
      }
   }
}

или так:

if(uslov1 && uslov2 && uslov3 && uslov4)
{
   Run;
}

есть ли вообще особая разница?

Vladimir Karputov
Модератор
182897
Vladimir Karputov  
Maksim Neimerik:
Привет! Расскажите как кто пишет условия, тоесть так:

или так:

есть ли вообще особая разница?

Вариант 1 позволяет ставить точку останова (очень нужно при отладке). Вариант 2 не позволяет ставить точку останова на каждом условии.

Nikolai Semko
6565
Nikolai Semko  
Maksim Neimerik:
Привет! Расскажите как кто пишет условия, тоесть так:

или так:

есть ли вообще особая разница?

главное достоинство первого варианта - возможность ставить else.

Это позволяет осуществлять более гибкую логику с ветвлениями.

Vladimir Simakov
5986
Vladimir Simakov  

Про отладку согласен, но мне больше нравиться такая форма записи.

Если короткое условие:

if (a&&b&&c);

Если условия длинные, например, функции с аргументами,то:

if (Foo1(...)   &&
    Foo2(...)   &&
    Foo3(...))  DoSomething();

Вообще дело вкуса. Лично меня фигурные скобки,, по одной на каждой строке, как в Вашей первой записи бесят. Если в VS все это дело свернуть можно, то тут, нет. Поэтому, конечно в ущерб удобности отладки, так пишу:

Foo(....){
   ...;
   ...;
   ...;}
Vitaly Muzichenko
13939
Vitaly Muzichenko  
Maksim Neimerik:
Привет! Расскажите как кто пишет условия, тоесть так:

или так:

есть ли вообще особая разница?

Я пишу вот так, но если это действительно условия

if(
uslov1 
&& uslov2 
&& uslov3 
&& uslov4
){
  Run;
 }

// По итогу получаю удобную штуку, если нужно что-то быстро добавить, или закомментировать как лишнее

if(
uslov1 
//&& uslov2 
//&& uslov3 
&& uslov4
&& uslov57
){
  Run;
 }
Igor Zakharov
6507
Igor Zakharov  
Vladimir Simakov:

Лично меня фигурные скобки,, по одной на каждой строке, как в Вашей первой записи бесят.

 Я их часто теряю, а так искать пары проще, когда закрывающая строго под открывающей.

А ещё полюбил вот такое извращение с недавних пор:

      LastHighBarBuffer[i]=LastHighBarBuffer[i-Period-1];
      LastLowBarBuffer [i]=LastLowBarBuffer [i       -1];

Опять же ради упрощения поиска опечаток.


А что про основной теме - компилятору, насколько я понимаю, без разницы. По прядку в первом случае, слева на право во втором. Первый вариант имеет смысл только ради случаев как я описал выше - забота о себе завтрашнем.

Nikolai Semko
6565
Nikolai Semko  
Maksim Neimerik:
Привет! Расскажите как кто пишет условия, тоесть так:

или так:

есть ли вообще особая разница?

нужно еще помнить о компактной форме записи "if... else"

int Floor(double x) { return (x>0)?(int)x:((int)x-x>0)?(int)x-1:(int)x; }

Компактность заключается не только в замене If на ?, а else на :, а в том, что можно обойтись без задействия промежуточных переменных.

Alexey Volchanskiy
27272
Alexey Volchanskiy  
Nikolai Semko:

нужно еще помнить о компактной форме записи "if... else"

Компактность заключается не только в замене If на ?, а else на :, а в том, что можно обойтись без задействия промежуточных переменных.

При всем уважении, я так никогда не пишу, так как код плохо читается, а я люблю "просторное" написание, чтобы не разбирать абракадабру. Хотя, у всех головы устроены по разному, я видел совершенно извращенные формы форматирования у опытных программистов. Хотя, все они были родом из времен алфавитных экранов с зелененькими буковками формата 24 строчки на 80 символов. С одним работали в одном проекте, он тогда в штатах, я в России. Обменивались кодом через систему хранения версий, типа, как тут. И я постепенно научился понимать его стиль, а он мой. Уже в готовом проекте все пропускали через форматтер.

Nikolai Semko
6565
Nikolai Semko  
Alexey Volchanskiy:

При всем уважении, я так никогда не пишу, так как код плохо читается, а я люблю "просторное" написание, чтобы не разбирать абракадабру. Хотя, у всех головы устроены по разному, я видел совершенно извращенные формы форматирования у опытных программистов. Хотя, все они были родом из времен алфавитных экранов с зелененькими буковками формата 24 строчки на 80 символов. С одним работали в одном проекте, он тогда в штатах, я в России. Обменивались кодом через систему хранения версий, типа, как тут. И я постепенно научился понимать его стиль, а он мой. Уже в готовом проекте все пропускали через форматтер.

Да, согласен. Для меня тоже важна видимость структуры программы, но лишь на этапе разработки и отладки. Когда алгоритм разработан и оттестирован,  то чтобы его структура не захлямляла другую структуру, которая его использует, то я стараюсь его упаковать и выкинуть все лишнее для скорости и компактности.
Alexey Volchanskiy
27272
Alexey Volchanskiy  
Nikolai Semko:
Да, согласен. Для меня тоже важна видимость структуры программы, но лишь на этапе разработки и отладки. Когда алгоритм разработан и оттестирован,  то чтобы его структура не захлямляла другую структуру, которая его использует, то я стараюсь его упаковать и выкинуть все лишнее для скорости и компактности.

Ну, проводятся же конкурсы по компактному коду. Иногда смотришь какую-нибудь рисованную графику, да еще со звуком MIDI, да размером килобайт и ясно понимаешь свое ничтожество )) 

Alexander Puzanov
42962
Alexander Puzanov  

В большинстве случаев оказывается со всех сторон удобней вариант вообще без фигурных и форматирования

if(!uslov1) return;
if(!uslov2) return;
if(!uslov3) return;
if(!uslov4) return;
Run;
При сложной отладке - особенно
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий