Форматирование операторов if - PullRequest
8 голосов
/ 19 сентября 2008

Это не священная война, это не вопрос "что лучше".

Каковы преимущества использования следующего формата для одного оператора if блоков.

if (x) print "x is true";

if(x) 
    print "x is true";

В отличие от

if (x) { print "x is true"; }
if(x) {
    print "x is true";    
}

Если вы форматируете свое отдельное утверждение ifs без скобок или знаете программиста, который это делает, что побудило вас / их принять этот стиль в первую очередь? Меня особенно интересует, какую пользу это принесло вам.

Обновление : так как самый популярный ответ игнорирует реальный вопрос (даже если он представляет самый вменяемый совет), вот сводный список профессионалов без скобок.

  1. Компактность
  2. Более читабельно для некоторых
  3. Скобки вызывают область видимости, которая в некоторых случаях имеет теоретические издержки

Ответы [ 42 ]

1 голос
/ 19 сентября 2008

Если вы делаете что-то вроде этого:

if(x)
{
    somecode;
}
else
{
    morecode;
}

Это работает лучше для директив управления исходным кодом и препроцессора. на коде, который живет долго. Проще добавить #if или около того без непреднамеренное нарушение оператора или необходимость добавления дополнительных строк.

это немного странно, чтобы привыкнуть, но работает довольно хорошо после в то время.

1 голос
/ 19 сентября 2008

Если это одна строка из if (и, возможно, одна строка из других), я предпочитаю не использовать скобки. Это более читабельно и кратко. Я говорю, что предпочитаю это, потому что это чисто вопрос предпочтений. Хотя я думаю, что пытаться обеспечить соблюдение стандарта, который вы всегда должны использовать в скобках, глупо.

Если вам нужно беспокоиться о том, чтобы кто-то добавил еще одну строку в тело оператора if и не добавил (только тогда обязательные) фигурные скобки, я думаю, что у вас есть более серьезные проблемы, чем в стандартах суб-византийского кодирования.

1 голос
/ 19 сентября 2008

Я предпочитаю стиль в скобках, главным образом потому, что он дает глазам четкую точку начала и окончания. Это облегчает понимание того, что на самом деле содержится в операторе, и что это на самом деле оператор if. Маленькая вещь, возможно, но именно поэтому я использую это.

1 голос
/ 19 сентября 2008

Заключение в скобки вашего однострочного текста, если операторы обладают значительным вменяемым преимуществом, защищая вас от головной боли, если в какой-то более поздний момент вам (или другим кодировщикам, поддерживающим или изменяющим ваш код) необходимо добавить операторы к некоторой части этого условного блок.

1 голос
/ 19 сентября 2008

Если вам интересно, как называются названия различных стилей форматирования кода, в Википедии есть статья о Indent Styles .

1 голос
/ 19 сентября 2008

Неважно что, это мой путь! Это выглядит лучше всего.

If(x)
{
    print "Hello World !!"
}
Else
{
    print "Good bye!!"
}
1 голос
/ 19 сентября 2008

, пока это не противоречит команде, в которой вы работаете, тогда это не имеет большого значения

главное, что все делают одно и то же

1 голос
/ 01 октября 2008

Я всегда предпочитаю это:

if (x) doSomething();

if (x) {
    doSomthing();
    doOtherthing();
}

Но всегда зависит от языка и действий, которые вы делаете. Иногда я люблю ставить брекеты, а иногда нет. Зависит от кода, но я кодирую как должен написать один раз, переписать десять раз и прочитать сто раз; так что просто делай так, как хочешь и как хочешь читать и понимать быстрее

1 голос
/ 19 сентября 2008
/* I type one liners with brackets like this */
if(0){return(0);}
/* If else blocks like this */
if(0){
    return(0);
}else{
    return(-1);
}

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

1 голос
/ 01 октября 2008

Мне не нравятся закрывающие скобки в одной строке со следующим ключевым словом:

if (x) {
    print "x is true";    
} else {
    do something else;
}

Это усложняет удаление / закомментирование только предложения else. Поместив ключевое слово follow в следующую строку, я могу воспользоваться, например, редакторами, которые позволяют мне выбирать диапазон строк и комментировать / раскомментировать их все сразу.

if (x) {
    print "x is true";    
}
//else {
//    do something else;
//}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...