Должны ли фигурные скобки появляться на их собственной линии? [закрыто]

Должны ли фигурные скобки быть на их собственной линии или нет? Что вы думаете об этом?

if (you.hasAnswer ()) {
    you.postAnswer ();
} else {
    you.doSomething ();
}

, или он должен быть

if (you.hasAnswer ())
{
    you.postAnswer ();
}
еще
{
    you.doSomething ();
}

или даже

if (you.hasAnswer ())
    you.postAnswer ();
еще
    you.doSomething ();

Прошу быть конструктивным! Объясните, почему, делитесь опытом, подтверждайте факты и ссылки.

252 голоса | спросил 10 revs, 3 users 66%
Tom Wijsman
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

30 ответов


80

Когда я был студентом, я использовал фигурные скобки в одной строке, так что линий меньше, а код печатается на меньшем количестве страниц. Глядя на один символ скобки, напечатанный как единственное в строке, раздражает. (окружающая среда, потеря бумаги)

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

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

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
224

Вы не должны делать третий метод.

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

Напишите свой код для других людей.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
187

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

Быть согласовано важно . Поэтому я сказал, давайте перевернем монету и перейдем к написанию кода.

Я видел, как программисты сопротивлялись таким изменениям раньше. Покончи с этим! Я много раз переключался в своей карьере. Я даже использую разные стили в своем C #, чем в PowerShell.

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

Множество стонов и amp; глаза прокатки. Множество «Мне нравится мой путь, потому что это лучше», но не вещество.

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

void MyFunction (
    int parameterOne,
    int parameterTwo) {
    int localOne,
    int localTwo
}

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

void MyFunction (
    int parameterOne,
    int parameterTwo)
{
    int localOne,
    int localTwo
}

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

void MyFunction (
    int parameterOne,
    int parameterTwo) {

    int localOne,
    int localTwo
}

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

Изменить : две альтернативы решению «лишней пустой строки» при использовании K & R:

1 /Отклонить аргументы функции от тела функции

2 /Поместите первый аргумент в ту же строку, что и имя функции, и выровняйте дальнейшие аргументы в новых строках с этим первым аргументом

Примеры:

1 /

void MyFunction (
        int parameterOne,
        int parameterTwo) {
    int localOne,
    int localTwo
}

2 /

void MyFunction (int parameterOne,
                int parameterTwo) {
    int localOne,
    int localTwo
}

/Edit

Я по-прежнему утверждаю, что согласованность важнее других соображений, но если у нас нет установленного прецедента , то переход к следующей строке - это путь.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
91

Основными правилами являются:

  1. Следуйте существующему стандарту кодирования проекта.
  2. Если нет стандарта кодирования, и вы редактируете существующую базу кода, принадлежащую кому-то другому, следуйте стилю существующего кода, независимо от того, насколько вам нравится /не нравится.
  3. Если вы работаете над проектом «зеленого поля», обсудите с другими членами команды и пришли к консенсусу по формальному или неофициальному стандарту кодирования.
  4. Если вы работаете над проектом «зеленого поля» как единственным разработчиком, - создайте свой собственный разум, а затем будьте безжалостным.

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

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

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
67

Преимущество первого метода состоит в том, что он более вертикально компактен, поэтому вы можете поместить больше кода на свой экран, и именно поэтому я предпочитаю его. Единственный аргумент, который я слышал в пользу второго метода, заключается в том, что он упрощает сопряжение открывающих и закрывающих скобок, но большинство IDE имеют для этого комбинацию клавиш, и на самом деле это ложное утверждение, вместо того, чтобы соединить открывающий кронштейн с закрытием вы можете соединить закрывающий кронштейн с выражением «start of block» (если, else, for, while) на том же уровне отступов, поэтому так же легко определить, где начинается начало блока.

Я не вижу причины тратить всю строку только на скобки, когда предыдущая для /while /if конструкция уже визуально указывает начало блока.

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

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
44

Я предпочитаю

if (you.hasAnswer ())
{
    you.postAnswer ();
}
еще
{
    you.doSomething ();
}

над

if (you.hasAnswer ()) {
    you.postAnswer ();
} else {
    you.doSomething ();
}

, потому что строка you.postAnswer (); намного проще читать и находить на первый взгляд. Во-вторых, он смешивается с линией над ней (you.hasAnswer ()), заставляя мои глаза больше сосредоточиться на ее прочтении.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
38

Я предпочитаю первый метод. Скобки не стоят отдельной линии.

Дело в том, что скобки не важны. Они всего лишь сильная синтаксическая , что абсолютно не нужно для понимания того, для чего предназначен код, его цели и способа ее реализации. Это всего лишь дань уважения старым C-образным языкам, где визуальная группировка операторов невозможна из-за низкого доступного пространства экрана.

Существуют языки (Python, Haskell, Ruby), которые в порядке, без брекетов. Это только подтверждает, что фигурные скобки являются мусором и не должны, по возможности, заслуживать линии:

if (you.hasAnswer ()) {
    you.postAnswer ();
} Еще {
    you.doSomething ();
}
ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
31

Использовать Python и полностью обойти аргумент.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
22

Положение фигурных скобок должно быть

метаданные

настраивается в среде IDE программистом. Таким образом, эти призрачные фигурные скобки во всем коде, независимо от автора, выглядят одинаково.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
19

Это зависит.

Если я кодирую в Javascript или jQuery, я использую первую форму:

jQuery (function ($) {
    if ($ instanceOf jQuery) {
        alert ("$ - объект jQuery!");
    }
});

Но если я кодирую в C #, я использую вторую форму, потому что это канонический способ сделать это на C #.

public int CalculateAge (DateTime birthDate, DateTime now)
{
    int age = now.Year - birthDate.Year;
    если (сейчас.Month <birthDate.Month
        || (now.Month == birthDate.Month & now.Day <birthDate.Day))
        возраст--;
    возраст возврата;
}

Обратите внимание, что ваш пример можно записать

if (you.hasAnswer ())
    you.postAnswer ();
еще
    you.doSomething ();

в C #.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
18

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

if (значение> максимум);
{
    сделай что-нибудь();
}

чем в этом примере

if (значение> максимум); {
    сделай что-нибудь();
}

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

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
14

Я предпочитаю небольшой вариант 1)

if (you.hasAnswer ()) {
    you.postAnswer ();
} //обратите внимание на разрыв здесь
else {
    you.doSomething ();
}

Почему?

  • Я думаю, что always установка фигурных скобок на их собственной линии уменьшает читаемость. Я могу установить только определенный объем исходного кода на моем экране. Стиль скобки 2) делает алгоритмы с большим количеством вложенных циклов и условностей больно длинными.

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

  • 3) дисквалифицирует себя. Мы все знаем, какие плохие вещи могут произойти, если вы оставите скобки и забудете об этом.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
10

Я где-то читал, что авторы какой-то книги хотели, чтобы их код был отформатирован следующим образом:

if (you.hasAnswer ())
{
    you.postAnswer ();
}
еще
{
    you.doSomething ();
}

Но пространственные ограничения от их издателя означали, что они должны были использовать это:

if (you.hasAnswer ()) {
    you.postAnswer ();
} else {
    you.doSomething ();
}

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

На личном уровне я предпочитаю скобки на отдельной строке:

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

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
9

Второй пример, я очень большой по удобочитаемости. Я не могу смотреть, если блокирует любой другой путь = (

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
9

А, Один True Brace Style .

У него есть все, что было предназначено для Святого Пути - даже пророк (Ричард «Мой путь или шоссе» Столлман).

Парень был так ошибается в отношении многих вещей, но GNU находится на месте, когда дело доходит до брекетов.


[Обновление] Я видел свет и теперь поклоняюсь Allman

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
7

Простой ответ: что легче отлаживать?

//Случай 1:
void dummyFunction () {
  для (i = 0; i! = 10; ++ i) {
    если (i <= 10)
      std :: cout <«i:« <<i <"\ П";
      std :: cout <10 - i <"оставшиеся шаги \ n";

      //Некоторая напряженная работа здесь
      //что действительно сложно
      //и занимает некоторое пространство экрана
    }
    еще
      std :: cout <«Мы никогда не доберемся»;
  }
} //ОШИБКА КОМПЬЮТЕРА ЗДЕСЬ


//Случай 2:
void dummyFunction ()
{
  для (i = 0; i! = 10; ++ i)

    если (i <= 10)
    {
      std :: cout <«i:« <<i <"\ П";
      std :: cout <10 - i <"оставшиеся шаги \ n";

      //Некоторая напряженная работа здесь
      //что действительно сложно
      //и занимает некоторое пространство экрана
    }
    еще
      std :: cout <«Мы никогда не доберемся \ n»;
  }
} //ОШИБКА КОМПЬЮТЕРА ЗДЕСЬ

В этом случае вы впервые диагностировали проблему?

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

Что касается аргумента «пустое пространство», я не покупаю его: я все равно добавляю пустые строки между логическими группами, чтобы сделать программу более четкой ...

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
5

Мне нравится первый метод. Похоже, что более скромная ИМО, и это более компактно, что мне нравится.

ИЗМЕНИТЬ: Ах, третий. Мне нравится, что это лучшее, когда это возможно, поскольку оно еще меньше /опережает.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
5

Не то, чтобы кто-нибудь заметил, но вот почему фигурные скобки принадлежат той же строке как условные (за исключением очень длинных условных выражений, но это крайний случай):

В C это допустимая конструкция:

в то время как (истинно);
{
    char c;
    GetChar (); //Подождите ввода
}

Быстро! Что делает этот код? Если вы ответили «бесконечный цикл с запросом на ввод», вы ошибаетесь! Он даже не попадает на вход. Он попадает в while (true). Обратите внимание, что точка с запятой в конце. Эта картина на самом деле более распространена, что кажется, что она должна быть; C требует, чтобы вы объявили свои переменные в начале блока, поэтому был запущен новый.

Строка кода - это мысль. Скобки являются частью мысли, содержащей условный или цикл. Поэтому они принадлежат к той же строке.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
4

Вы можете написать это:

you.hasAnswer ()? you.postAnswer (): you.doSomething ();

Чтобы ответить на вопрос; Я предпочитал фигурные скобки на своей собственной линии, но, чтобы не думать о ошибках автоматической вставки точек с запятой в браузерах, я начал использовать египетский стиль для javascript. И когда я кодировал java в eclipse, я не интересовался борьбой (или настройкой) стиля привязки по умолчанию, поэтому я тоже пошел с египтяне. Теперь я в порядке с обоими.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
4

Почти все ответы здесь говорят о некотором изменении «Что бы вы ни делали, придерживайтесь одного или двух».

Поэтому я подумал об этом на мгновение и должен был признать, что я просто не считаю это важным. Может ли кто-нибудь честно сказать мне, что следовать этому трудно?

int foo (int a, Bar b) {
    int c = 0;
    в то время как (a! = c)
    {
        if (b.value [a] == c) {
            c = CONST_A;
        }
        C ++;
    }
    return c;
}

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

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

FWIW, наши стили кодирования на работе используют немного более структурированную форму 1 и модифицированную форму 3. (C ++)

//здесь требуется пустая строка
если (x) {
            //Эта пустая строка требуется
   y = z;
}
            //здесь также требуется пустая строка, если только эта строка не является еще одним символом '}'

если (x) y = z; //позволил

если (x)
    y = z; //запрещено

Мне любопытно, если те, кто сильно предпочитают форму 2, найдут эту версию формы 1 лучше, просто потому, что пустая строка дает более сильное визуальное разделение.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
4

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

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

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

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
2

Мне лично нравится второй способ.

Однако то, что я собираюсь продемонстрировать, на мой взгляд лучше, потому что это приводит к максимальной безопасности работы! Один студент из моего университета попросил меня помочь в его домашнем задании, и так выглядел его код. Вся программа выглядела как один блок. Интересно то, что 95% ошибок в программе, которую он сделал, исходили из несогласованных брекетов. Остальные 5% были очевидны после согласования фигурных скобок.

в то время как (1) {
I = 0;
printf («Введите кодированный текст: \ n»);
в то время как ((s = GetChar ())! = '\ п') {
         если (я% 1 == 0) {
            начать = (символ *) перераспределить (вход, (г + 1) * SizeOf (Char));
если (начало == NULL) {
printf («Не удалось выделить память!»);
выход (1);}
вход = старт;}
      вход [я ++] = s;}
начать = (символ *) перераспределить (вход, (г + 1) * SizeOf (Char));
если (начало == NULL) {
printf («Не удалось выделить память !!!»);
выход (1);}
вход = старт;
Входные [I] = '\ 0';
                ставит (вход);
ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
2

Мои личные предпочтения относятся к первому методу, вероятно, потому, что я впервые узнал PHP.

Для операторов с одной строкой if я буду использовать

if (you.hasAnswer ()) you.postAnswer ();

Если это не you.postAnswer ();, но что-то намного больше, например you.postAnswer (this.AnswerId, this.AnswerText, this.AnswerType); Я, вероятно, вернусь к первому типу:

if (you.hasAnswer) {
    you.postAnswer (this.AnswerId, this.AnswerText, this.AnswerType);
}

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

if (you.hasAnswer ()) you.postAnswer ();
else you.doSomething ()

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

if (you.hasAnswer ()) {
    you.postAnswer ();
} else {
    you.doSomething ();
}
ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
2

Они не должны; первый метод для меня.

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

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

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

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
2

Это зависит от платформы /языка /условных обозначений

В Java:

void someMethod () {
     if (you.hasAnswer ()) {
         you.postAnswer ();
     } else {
       you.doSomething ();
     }
}

В C #

void someMethod ()
{
     if (you.hasAnswer ())
     {
         you.postAnswer ();
     }
     еще
     {
       you.doSomething ();
     }
}

В C:

void someMethod ()
{
     if (you_hasAnswer ()) {
         you.postAnswer ();
     } else {
       you_doSomething ();
     }
}

Я ненавижу, когда Java-парни используют свой стиль в коде C # и наоборот.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
1

Все, что я могу сказать, это то, что если вы поклонник метода № 3, вас преследуют каждый IDE-код-форматер на земле.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
1

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

Если вам did нужно визуально совместить фигурные скобки, тогда я предпочел бы второй метод. Однако это позволяет меньше кода за один раз, что требует от вас больше прокрутки. И это для меня, по крайней мере, оказывает большее влияние на чтение кода, чем на аккуратно выровненные фигурные скобки. Я ненавижу прокрутку. Опять же, если вам нужно прокрутить один оператор if, он, скорее всего, слишком велик и нуждается в рефакторинге.

Но; самое главное - это последовательность. Используйте один или другой - никогда не оба!

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
0

Когда я впервые изучал программирование на 12, я добавляю скобки на следующей строке, потому что учебники по кодированию Microsoft подобны этому. Я также отступом с 4-пространственным TABS, что время.

Через несколько лет я изучил Java и JavaScript, и увидел больше кода на фигурном показе, поэтому я изменился. Я также начал отступать с двумя пробелами SPACES.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
0

Существует 4-й вариант, который поддерживает выравнивание фигурных скобок, но не тратит пространство:

if (you.hasAnswer ())
{you.postAnswer ();
     i.readAnswer ();
}
еще
{you.doSomething ();
}

Единственная проблема заключается в том, что большинство автоформатов IDE задерживаются на этом.

ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59
-1

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

Я лично предпочел бы 1-й метод.

Также я не получил то, что вы хотите показать третьим методом?

Разве это не так? Например, рассмотрим ситуацию как ..

if (you.hasAnswer ())
  you.postAnswer ();
еще
  you.doSomething ();

Теперь, что, если кто-то хочет добавить еще несколько операторов в блок if ?

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

if (you.hasAnswer ())
   you.postAnswer1 ();
   you.postAnswer2 ();
еще
   you.doSomething ();
ответил Marius Balčytis 12 +03002016-10-12T00:59:59+03:00312016bEurope/MoscowWed, 12 Oct 2016 00:59:59 +0300 2016, 00:59:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132