Почему так много кода выглядит именно так?

 

Я часто вижу это, когда люди публикуют свой код.

if(a==b){
Dothis;
Dothis;
etc;
}

При чтении коротких фрагментов чужого кода это не является проблемой.

Но когда кода много, это может сделать его практически невозможным для понимания.

Я думаю, что многим будет трудно найти ошибки в собственном коде.

Почему бы и нет?

if(a==b)
{
Dothis
Dothis
etc
}

//Or

if(a==b)
  {
  Dothis
  Dothis
  etc
  }

 

Нет ничего плохого в прежнем стиле ( стиль K & R ) (при условии, что он имеет отступы). Он часто используется в языках с подобным синтаксисом (C, Java, Perl).

Это, например, стандарт Java и вполне читабельный IMO (при условии правильного отступа). [Поскольку mql4 в значительной степени заимствует синтаксис стиля C, я думаю, что упоминание этих других языков уместно.]

Однако отступ должен быть:


if(a==b){
   Dothis;
   Dothis;
   etc;
}


Второй пример ( стиль Allman ) также предпочитается некоторыми, и, по общему мнению, является более читабельным (опять же, при правильном отступе).


if(a==b)
{
   Dothis;
   Dothis;
   etc;
}

Но метод, который вы отвергаете, довольно популярен в других языках (по причинам удобочитаемости).

Ваш последний пример мне совсем не нравится.

 

Стиль allman также легче определить недостающие скобки, особенно в сложных деревьях if else.

 

Стиль скобы - это предпочтение программистов, на самом деле нет правильного или неправильного метода. Стиль K&R - самый лучший ;-). Зачем занимать лишнюю строку для открывающей скобки ...., что меня действительно волнует, так это то, к какому if{выражению} она принадлежит. Пример того, что выглядит лучше и проще для понимания.

if(.............................)
    {
    if(.............................)
        {
        if(.............................)
            {
            if(.............................)
                {
                if(.............................)
                    {
                    if(.............................)
                        {
                        if(.............................)
                            {
                            if(.............................)
                                {
                                if(.............................)
                                    {
                                    if(.............................)
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

Или этот вариант:

if(.............................){
    if(.............................){
        if(.............................){
            if(.............................){
                if(.............................){
                    if(.............................){
                        if(.............................){
                            if(.............................){
                                if(.............................){
                                    if(.............................){
}   }   }   }   }   }   }   }   }   }

И даже лучше.

if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
Имхо, последняя версия более естественна для того, как я пишу в реальной жизни. Строчка за строчкой.
 

Я делаю это следующим образом:

if(.............................)
{if(.............................)
 {if(.............................)
  {if(.............................)
   {if(.............................)
    {if(.............................)
     {if(.............................)
      {if(.............................)
       {if(.............................)
        {if(.............................)
}}}}}}}}}
 

Мне нравится дискуссия.

А как насчет предпочтений в кодировании оператора else . Мне больше нравится первый пример, хотя некоторые редакторы не могут сворачивать/разворачивать такие блоки. Второй - компромиссный вариант. Третий - еще более последовательный, но нечитабельный.

if (cond) {
   command;
} else if (cond) {
   command;
} else {
   command;
}

или

if (cond) {
   command;
}
else if (cond) {
   command;
} 
else {
   command;
}

или

if (cond) {
   command;
} 
else {
   if (cond) {
      command;
   }   
   else {
      command;
   }  
}
 
В какой-то степени это не имеет значения, главное - последовательность применения выбранного стиля... У каждого из нас, конечно, свои предпочтения.
 

Я больше не часто использую else. Была одна проблема, когда я был вынужден использовать else некоторое время назад (не могу вспомнить проблему). Когда я использовал else, это выглядело примерно так.

if (cond) { command; } else 
if (cond) { command; } else {
   command;
}

Однако сейчас, когда я кодирую что-то вроде вышеупомянутого, первым моим научением будет.

if( cond ){ command; return; }
if( cond ){ command; return; }
command;

Да, я превращу трехстрочный код в функцию 8)))

 
SDC:

Я делаю вот так

Лично я считаю, что это так же ясно, как грязь.
 
RaptorUK: Лично я считаю, что это так же ясно, как грязь.
У меня просто глаза болят :{
 
RaptorUK:
В какой-то степени это не имеет значения, главное - последовательность применения выбранного стиля... Конечно, у каждого свои предпочтения.

Согласен с Raptor. Тема ни о чем. Меня гораздо больше расстраивает, когда люди публикуют здесь свой код без использования SRC. Как они будут кодировать свою программу, зависит от них самих, если только они не собираются просить помощи.
Причина обращения: