2009-09-16 2 views
1

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

Считаете ли вы, что заявление должно быть написано как:

if(condition) 
{ 
    statement = new assignment; 
} 

ИЛИ

if(condition) 
    statement=new assignment; 

пожалуйста обеспечивают хорошую причину своего решения.

+2

Дубликат: http://stackoverflow.com/questions/97506/formatting-of-if-statements, http://stackoverflow.com/questions/691476/are-singleline-if-statements-or-if-statements-without-bad- практика, http://stackoverflow.com/questions/779332/do-you-put-conditional-code-on-a-new-line-or-only-sometimes и многие другие. – Shog9

+1

По твоему праву ты полностью изменил вопрос ;-) –

+0

Я не делал редактирования ;-) – ErnieStings

ответ

21

, если вы действительно должны использовать одну строку, если

if(condition) statement=new assignment; 

будет лучше, так как его одной линии, она должна содержать одну операцию.

+1

+1, потому что в основном, если вам нужны фигурные скобки, вы не пишете его в одной строке. –

4

Я всегда был поклонником брекетов. Если кто-то изменить oneline если заявление так:

if(condition) statement=new assignment; 

в

if(condition) 
statement = new assignment; 
another statement; 

Вы не получите ожидаемое поведение.

Использование брекетов в значительной степени гарантирует, что, если кто-то изменяет инструкцию if, они обязательно поставят правильные утверждения в нужное место.

+12

Если кто-то это делает, они, очевидно, не понимают язык. Разве это не подпадает под основную компетенцию? (Предположительно искренность) –

+5

Понимание языка и создание опечаток не имеют ничего общего друг с другом. Добавление брекетов * гарантирует, что правильное поведение происходит независимо. – Alan

+3

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

1

Я всегда делаю однострочные if заявления без санкций. Наличие скобок указывает (синтаксически правильно), что «о, я могу сделать что-то еще здесь ...», и мне не нравится соблазн. Все, что связано с несколькими утверждениями, должно быть разбито на несколько строк с соответствующими скобками.

13

Я всегда использую прилагаемые фигурные скобки, чтобы уменьшить риск того, что кто-то (включая меня) позже представит ошибку, отредактировав код вокруг инструкции if, не обращая при этом внимание на то, какие строки принадлежат как часть условия if ,

EDIT:

Вот живой пример, если это я просто случайно наткнулся на какой-то старый код:

if (form.validateUpload (messages, this)) 
    return getErrorOutcome (ctx, messages); 
    if (LOG.isInfoEnabled()) 
     LOG.info ("CREATING UPLOAD"); 

Обратите внимание, как и «если» заявления в основном блоке кода, но из-за к плохому форматированию, на первый взгляд они кажутся вложенными. Конечно, любой «хороший» программист должен быстро увидеть, что происходит, но зачем вызывать лишнюю путаницу?

0

Я бы пошел без скобок.

Единственная причина, по которой вам нужны скобки, заключается в том, что в блоке имеется несколько операторов.

Звучит как пустая трата аргумента.

0
if(condition) 
    statement=new assignment; 

или

if(condition) statement=new assignment; 
0

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

operation if condition; 
+1

Как и в случае с JuanZe, это не ответ. Вопрос заключался в том, чтобы * как * делать однострочные, а не в том случае. –

4

Это действительно зависит от стиля кодирования вашей группы. Группа должна иметь последовательные стандарты кодирования. Для моей текущей группы мы всегда используем:

if (condition) { 
    statement = new assignment; 
} 

Мы делаем это, чтобы избежать ошибок, вызванные забывая скобки после, если заявления, например:

if (condition) 
    statement1; 
    statement2; 
//statement2 is not part of the if statement, but it looks like it because of wrong indentation 

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

if (condition) 
    statement1; 

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

Соглашения вашей среды IDE или среды могут обеспечить хорошую основу для ваших стандартов кодирования и даже могут быть адаптированы к стилю вашей группы.

+2

+1 Стандарты кодирования –

0

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

+0

Мне любопытно, почему так много людей отвечают на нерелевантные ответы. Опять же, вопрос о том, как * формировать однострочные, а не *, если он должен *. –

+0

Это не имеет значения. В моем исходном репозитории, контролируемом форматом, нет единой строки. Это просто не может существовать, и поэтому беспокоиться о проблеме не имеет значения. –

+1

Кроме того, ОП задал предпочтение. Я дал свой. Это ваш КОММЕНТАРИЙ, который не имеет значения, поскольку вы явно не читали вопрос. –

1
if (condition) 
{ 
    statement = new assignment; 
} 

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

В очень редких случаях, я хотел бы сделать исключение, обычно только тогда, когда я быстро и грязно кодирования что-то для отладки и т.д.

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

1

Я всегда использую вмещающих скобки, и я никогда код одну строку сослагательного наклонения, мой подход не выглядит так

if(condition) { 
    statement = new assignment; 
} 

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

http://java.sun.com/docs/codeconv/html/CodeConventions.doc6.html#449

Примечание: если заявления всегда использовать фигурные скобки {}. Избегайте следующих ошибок склонными вид:

if (condition) //AVOID! THIS OMITS THE BRACES {}! 
    statement; 

Использование скобок предотвращения ошибок: некоторые еще можно добавить позже новые предложения, которые suposed должны быть выполнены, если условие и забвение скобок

Смежные вопросы