Я видел такой код:
if(statement)
do this;
else
do this;
Однако я думаю, что это более читабельно:
if(statement){
do this;
}else{
do this;
}
Поскольку оба метода работают, это просто вопрос предпочтения, который использовать, или один из них будет рекомендован перед другим?
if-statement
coding-style
curly-braces
jerebear
источник
источник
Ответы:
Проблема с первой версией заключается в том, что если вы вернетесь и добавите второй оператор к предложениям if или else, не забыв добавить фигурные скобки, ваш код неожиданно и забавно сломается.
С точки зрения ремонтопригодности всегда разумнее использовать вторую форму.
РЕДАКТИРОВАТЬ: Нед указывает на это в комментариях, но я думаю, что здесь тоже стоит сделать ссылку. Это не просто гипотетическая чушь про башню из слоновой кости: https://www.imperialviolet.org/2014/02/22/applebug.html
источник
if (…) { goto L; goto L; }
но забыл о фигурных скобках. Совершенно случайно, что `` if (…) {goto L; goto L; } `не является ошибкой безопасности, потому что это все еще ошибка (только не с последствиями для безопасности). В другом примере все может пойти в обратном направлении, и код без скобок может оказаться случайно безопасным. В третьем примере код без фигурных скобок изначально не содержал бы ошибок, и разработчик вводил опечатку при добавлении фигурных скобок.Одной из проблем, связанных с исключением блоков операторов, является неоднозначность else. То есть языки, основанные на C, игнорируют отступы и поэтому не имеют возможности их разделить:
Из этого:
источник
else
объект жадно привязывается к ближайшему, самому внутреннемуif
. Проблема возникает, когда C или подобные языки кодируются людьми, которые этого не знают, не думают об этом или еще не выпили достаточно кофе - поэтому они пишут код, который, по их мнению, будет делать что-то одно, но Спецификация языка говорит, что синтаксический анализатор должен делать что-то еще, что может сильно отличаться. И да, это еще один веский аргумент в пользу того, чтобы всегда включать фигурные скобки, даже если грамматика помечает их как теоретически «ненужные».Мой общий шаблон таков: если он умещается в одной строке, я сделаю:
Если есть предложение else или если код, который я хочу выполнить,
true
имеет значительную длину, полностью используйте фигурные скобки:В конечном итоге все сводится к субъективному вопросу стиля и удобочитаемости. Однако общий мир программирования в значительной степени разделяется на две части (для языков, в которых используются фигурные скобки): либо используйте их все время без исключения, либо используйте их все время без исключения. Я принадлежу ко второй группе.
источник
if(true){ do_something(); }
, зачем рисковать, если другой программист внесет серьезную ошибку в будущем (найдите полную ошибку ssl-кода Apple "goto fail").Я использую средство форматирования кода среды IDE, которую использую. Это может отличаться, но его можно настроить в настройках / параметрах.
Мне нравится этот:
источник
Я следую «правилу»:
Если оператор «if» выполняет тестирование, чтобы что-то сделать (функции вызова IE, переменные настройки и т. Д.), Используйте фигурные скобки.
Это потому, что я чувствую, что вам нужно прояснить, какие функции вызываются, и куда идет поток программы, при каких условиях. Наличие у программиста точного понимания того, какие функции вызываются и какие переменные установлены в этом состоянии, важно для того, чтобы помочь им понять, что именно делает ваша программа.
Если оператор «if» выполняет тестирование, чтобы прекратить что-либо делать (управление потоком IE внутри цикла или функции), используйте одну строку.
В этом случае для программиста важно быстро обнаружить исключительные случаи, когда вы не хотите, чтобы код запускался, и все это покрывается $ test, а не блоком выполнения.
источник
Наличие фигурных скобок с первого момента должно помочь вам никогда не отлаживать это:
источник
;
:)Используйте фигурные скобки для всех операторов if, даже самых простых. Или перепишите простой оператор if, чтобы использовать тернарный оператор:
Гораздо приятнее выглядит так:
Но используйте тернарный оператор только в том случае, если вы абсолютно уверены, что больше ничего не нужно добавлять в блоки if / else!
источник
Я предпочитаю использовать подтяжки. Добавление фигурных скобок упрощает чтение и изменение.
Вот несколько ссылок по использованию скобок:
Предпочитать многострочный, если
Отсутствие скобок: вопрос не только в стиле
Переполнение стека
источник
По моему опыту, единственное (очень) небольшое преимущество первой формы - читабельность кода, вторая форма добавляет «шума».
Но с современными IDE и автогенерацией кода (или автозаполнением) я настоятельно рекомендую использовать вторую форму, вы не будете тратить лишнее время на ввод фигурных скобок и избежите некоторых из наиболее частых ошибок.
Жуков, потребляющих много энергии, достаточно, люди просто не должны открывать двери на большие траты времени.
Одно из самых важных правил, которое следует помнить при написании кода, - это согласованность. Каждая строчка кода должна быть написана одинаково, независимо от того, кто ее написал. Строгость предотвращает "возникновение" ошибок;)
То же самое и с четким и явным обозначением ваших переменных, методов, файлов или с правильным отступом ...
Когда мои студенты принимают этот факт, они перестают бороться со своим исходным кодом и начинают рассматривать кодирование как действительно интересное, стимулирующее и творческое занятие. Они бросают вызов своему разуму, а не нервам!
источник
Это вопрос предпочтения. Я лично использую оба стиля, если я достаточно уверен, что мне больше не нужно будет добавлять операторы, я использую первый стиль, но если это возможно, я использую второй. Поскольку к первому стилю нельзя добавлять больше операторов, я слышал, что некоторые люди рекомендуют его не использовать. Однако второй метод требует дополнительной строки кода, и если вы (или ваш проект) используете такой стиль кодирования, первый метод очень предпочтителен для простых операторов if:
Однако я думаю, что лучшее решение этой проблемы - в Python. С блочной структурой на основе пробелов у вас нет двух разных методов создания оператора if: у вас есть только один:
Хотя здесь есть «проблема», заключающаяся в том, что вы вообще не можете использовать фигурные скобки, вы получаете то преимущество, что больше нет строк, чем первый стиль, и у него есть возможность добавлять больше операторов.
источник
Я всегда старался сделать свой код стандартным и максимально приближенным к нему. Это облегчает другим пользователям чтение, когда они отвечают за его обновление. Если вы выполните свой первый пример и добавите к нему строку посередине, он потерпит неудачу.
Не получится:
если (оператор) сделать это; и это; иначе сделайте это;
источник
Лично я использую первый стиль, только вызываю исключение или преждевременно возвращаюсь из метода. Как аргумент Проверка в начале функции, потому что в этих случаях мне редко приходится делать более одного дела, и никогда не бывает другого.
Пример:
В противном случае я использую второй стиль.
источник
Лично я предпочитаю использовать сочетание пробелов и скобок, например:
Я думаю, что это выглядит чистым и делает мой код очень простым для чтения и, что самое главное, - для отладки.
источник
Я согласен с большинством ответов в том, что лучше указывать в коде явно и использовать фигурные скобки. Лично я бы принял набор стандартов кодирования и убедился бы, что все в команде знают их и соблюдают. Где я работаю, мы используем стандарты кодирования, опубликованные IDesign.net для проектов .NET.
источник
Я предпочитаю ставить фигурную скобку. Но иногда помогает тернарный оператор.
Вместо того :
Просто нужно сделать:
int x = condition ? 30 : 20;
Также представьте себе случай:
Было бы намного лучше, если бы вы вставили фигурную скобку.
источник