Где вы ставите {?

     

    Only registered users can participate in poll. Log in, please.

    Где вы ставите {?

    • 45.4%В той строке, где ключевое слово (или заголовок функции)407
    • 45.1%В отдельной строке, где нет ничего кроме фигурной скобки404
    • 9.5%Я пишу на питоне85

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 87

      –2
      И ещё хотелось бы знать, как себя чувствуют выбравшие второй пункт, написав конструкцию } else { :)
        +8
        Нормально.
          +18
          прекрасно!
          }
          else
          {
            +17
            А меня почему-то коробит, что какой-то жалкий else занимает аж три строки.
              +8
              зато от скобки к скобке невероятно удобно глазами по коду перемещаться!
                +32
                Код не должен быть компактным, код должен быть читаемым
                  +3
                  А почему бы ему не быть компактным и читаемым? В этом случае компактность никак не мешает читабельности.
                    +6
                    Для чего код должен быть компактным?
                    Компилятору это без разницы, а вашим коллегам по команде читаемость важнее.

                    Наличие большого числа комментариев в коде отлично сказывается на его читабельности и отрицательно влияет на его компактность.

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

                    Хоть в теории идеальный код — читаемый и компактный, на практике — эти понятия часто противостоят друг другу.

                      +3
                      Я скорее в этом случае просто склоняюсь к тому, что больше строк кода должно поместиться на экранную страницу, больше кода будет охватываться взглядом за раз.
                      Ну это просто причины, по которым я не люблю, когда скобка занимает целую строку. Охотно верю, что кому-то удобнее наоборот.
                      0
                      Для маленьких проектов — да. От 2-3 MLOC когда нужно пойти посмотреть какую-нибудь логику в программе и выглядит это действо как «go to definition» -> «find all references» -> «go to defenition» -> «go to definition» ->… и перед глазами мелькают сотни экранов кода — разница между читаемостью и компактностью, увы, начинает ролять даже на таких мелочах как «спрятанные» фигурные скобки :(
                      +5
                      любое
                      предложение
                      в
                      котором
                      переводы
                      строк
                      на
                      каждом
                      шагу
                      является
                      плохо
                      читаемым
                        0
                        Вы вероятно ничего не слышали о скорочтении. Ему обучают как раз по таким специальным книгам — по ширине текст небольшой и глазу не приходится скользить влево-вправо. В итоге по текст, на котором переводы строк на каждом шагу, намного быстрее читается.
                      +1
                      Вы тут на else не наговаривайте!
                        –3
                        Можно Code Folding использовать, и даже 1000 строк легко поместится на экране :)

                    • UFO just landed and posted this here
                        0
                        за живое задел)
                          +14
                          Те кто второй пункт выбирают, так не пишут, скорее уж как-то так:
                          if (statement)
                          {
                            ...;
                          }
                          else
                          {
                            ...;
                          }
                          
                            +1
                            так и есть:)
                              +4
                              не читабельно
                              0
                              Вполне комфортно:

                              }
                              else
                              {
                                +4
                                я так пишу
                                if(){

                                }
                                else{

                                }
                                Пока устраивает.
                                  +3
                                  Сравните это с кодом сверху. Хоть код самый простой, но уже как-то мозгу неприятно.
                                    +4
                                    вы по-моему нервируете и тех и тех (8
                                      0
                                      Конечно. Потому, что перед фигурной скобкой должен быть пробел.
                                      if (statement) {
                                          doSomething();
                                      }
                                      else {
                                          doAnotherThing();
                                      }


                                      А еще меня выворачивает когда пишут
                                      if (statement) {
                                          ...
                                      } else { // арррррр!
                                          ...
                                        0
                                        Забыл добавить почему:
                                        мне кажется, что визуально else должен находиться на том же уровне, что и if
                                  +3
                                  В отдельной строке взглядом быстрее отлавливаются, когда пробегаешься по коду.
                                    +13
                                    Программирую и на php и на javascript, всегда ставлю на той же строчке с ключевым словом, ровно как и двоеточие:

                                    function name() {
                                    /**/
                                    } else {
                                    /**/
                                    }
                                    foreach ():
                                    /**/
                                    else:
                                    /**/
                                    endforeach;

                                    Смысл не визуальный, а скорее принадлежности фигурной скобки к имени функции.
                                      0
                                      Скопипастил else внутрь foreach по глупости, прошу игнорировать, но смысл конструкции понятен.
                                      +9
                                      Ээ, а где linux kernel, он же K&R style?
                                      int main(int argc, char *argv[])
                                      {
                                          ...
                                          while (x == y) {
                                              something();
                                              somethingelse();
                                              if (some_error)
                                                  do_correct();
                                              else
                                                  continue_as_usual();
                                          }
                                          finalthing();
                                          ...
                                      }
                                        +1
                                        Кстати, использование этого стиля не мешает мне писать на питоне, шелле и лиспе. Питон – это форсирование отступов, а не стиля скобок.
                                          0
                                          Честно, не знал что так пишут. По-моему это какая-то классовая дискриминация ключевых слов :)
                                            +1
                                            Это пошло с тех времен, когда мониторы были очень маленькие, текстовые редакторы очень простые а программы короткие. Сейчас, увы, времена изменились и проекты от 10 MLOC — норма жизни. Читаемость выползла на первое место и начала жрать скобки :(.
                                              0
                                              ну мне все еще удобно и привычно ставить скобки именно так :)
                                                +1
                                                Мне тоже :). Но обязанности тимлида заставляют бороться с привычками и делать не как нравится, а как по феншую :(. Бо частые гуляния по чужому коду не добавляют иллюзий относительно того, что пять миллионов строк «все равно легко читаются» O_O.
                                          • UFO just landed and posted this here
                                              +3
                                              Автоформатирование тоже можно настроить по-разному, нет?
                                                +1
                                                Это поведение во всех утилитах форматирования кода, является настраиваемым.
                                                  0
                                                  Каждый перевод строки 2 байта в Windows (с кодами 10 и 13), в Unix'ах по-моему только один байт. Но всё же это влияет на «вес файла».
                                                    0
                                                    Он имел в виду скомпилированный файл.
                                                  +5
                                                  А я пишу так, как договорились с остальными участниками проекта.
                                                  Обычно в C# пишу { в отдельной строке. В Java, PHP — в конце строки с управляющей инструкцией.
                                                    0
                                                    Вы меня опередили ))
                                                    Я делаю точно так же.
                                                    0
                                                    И ещё интересно, чем я заслужил понижение кармы? :) Те кто минусанул объясните пожалуйста мне на будущее.
                                                      +7
                                                      в карму по утрам я не плюю, но раз уж минусанул топик — расскажу

                                                      дело в том, что опрос этот… стар как мир. тема скобок настолько избита, что даже тут про это есть.
                                                      спрашивается, зачем ещё один опрос на эту тему?

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

                                                      на будущее: не делайте опрос «Как вы именуете переменные?» :)
                                                        –3
                                                        Спасибо за ответ. Но вообще я давно на хабре и такого опроса что-то не помню. Холивары были да, но не было топика, который дал бы чётко понять на какой стороне большинство.
                                                          0
                                                          Но вообще я давно на хабре и такого опроса что-то не помню.

                                                          может связано с тем, что тема устарела ещё раньше?

                                                          но не было топика, который дал бы чётко понять на какой стороне большинство

                                                          а ваш топик открыл нам глаза? :)

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

                                                          а на тему вашего опроса… нужна большая железная линейка. этой линейкой надо бить по рукам тем, кто ставит скобки не так как остальные разработчики в команде.
                                                            –1
                                                            RE: может связано с тем, что тема устарела ещё раньше?
                                                            RE: а ваш топик открыл нам глаза? :)

                                                            А что делать тем, кто тогда ещё не родился? =) Лично я на данный момент доволен возникшим обсуждением и рад что увидел мнение более опытных людей. Это полезно. Наверняка, я не один такой — вон сколько тут пхпшеров набежало.
                                                      • UFO just landed and posted this here
                                                        –1
                                                        Если вы пишите на php (а уж тем более на ZF), то рекомендуется открывающую скобку оставлять в той же строке при применении конструкции if/else. И на новой в случае функции/метода.
                                                        Стандарт кодирования на PHP в Zend Framework'е
                                                          0
                                                          Вот он — золотой комментарий.
                                                          Главное не то, где и как вы пишите скобки, а то, соблюдаете ли вы выбранную в вашей организации конвенцию. Можно одновременно работать на более чем одном проекте с разными соглашениями и одновременно использовать оба варианта и оба случая будут идеальными.
                                                          Если не изменяет память, это хорошо разжёвано тут.
                                                          +6
                                                          Очень долго ставил скобку на новой строке. Но где-то год назад у меня что-то переклинило и я перешёл на египетский стиль (скобка в той же строке).
                                                            +2
                                                            Аналогично.
                                                            0
                                                            ИМХО, кто часто польузется мышкой для перемещения курсора — те чаще ставят фигурную скобку на отдельной строке. Кто пользуется только клавиатурой (vim/emacs) — те чаще используют «египетские» скобки. Я использую «египетский» стиль — чтение кода не затрудняется, а навигация по коду, с использованием только клавиатуры, происходит быстрее. «if», "{", "}" и «else» — это не настолько сложные операторы, чтобы будучи в одной строке, они как-то затрудняли чтение.
                                                              +1
                                                              Первый способ.
                                                              Компактнее, визуально ничем не устапает второму, так как вложенность прослеживается отступами.
                                                                +2
                                                                В зависимости от того, как фолдятся блоки внутри скобок
                                                                в MS Visual Studio
                                                                if (1)
                                                                {
                                                                // bla-bla-bla
                                                                }
                                                                else
                                                                {
                                                                // bla-bla-bla
                                                                }


                                                                в xCode
                                                                if (1) {
                                                                // bla-bla-bla
                                                                }
                                                                else {
                                                                // bla-bla-bla
                                                                }


                                                                при сворачивании дает
                                                                if (1) {...}
                                                                else {...}
                                                                  +2
                                                                  А чисто моего варианта нет в опросе. Не могу сказать, по какой причине (кажется, с каким-то фреймворком работал, и там так было принято), но я почему-то для себя такое правило выработал: если объявление класса или функции — скобка на новой строке, а если управляющая конструкция — на той же.

                                                                  Т.е. как-то так:
                                                                  function a()
                                                                  {
                                                                  if (1=1) {
                                                                  // nothing
                                                                  } else {
                                                                  // noting too
                                                                  }
                                                                  }
                                                                      0
                                                                      Возможно, это как-то на подсознании работает, т.к. K&R — одна из первых моих книг по программированию, еще самиздатовская печать
                                                                      0
                                                                      Сам использую такой стиль. Подсмотрел здесь.
                                                                      +2
                                                                      А где вариант: зависит от framework / стандарта кодирования?
                                                                        –2
                                                                        Не по феншую :). Многолетнее использование одного стиля дает к нему affinity и позволяет с высокой скоростью читать и писать код. Особенно читать.
                                                                          +4
                                                                          Да, но если вы не один разработчик, то надо договариваться. И лучше договорится на берегу ) А чтобы было меньше споров, и можно было спокойно без напряга читать документацию и использовать какой-то готовый код, то лучше принять то, что полагается делать в выбранном инструменте
                                                                        0
                                                                        Феншуй — не догма, а руководство к действию :)

                                                                        Если что-то пишешь с импользованием фреймворка (тем более, если это некий «придел» вроде плагина, модуля, библиотечного класса и т.д.), то порой более «феншуйным» будет использовать не собственные традиции и привычки, а те нотации, которые декларированы в этом фреймворке.
                                                                          +1
                                                                            0
                                                                            В новых проектах — оставляю "{" на предыдущей строке.
                                                                            В уже существующих проектах — использую стиль, принятый в проекте.

                                                                              0
                                                                              Я ставлю по ситуации:
                                                                              и так
                                                                              _each(list_fields, (field, fun) -> { 
                                                                                 act_tmpl.getRange(Rect.VShift(act_names[field], ix, true)).Value = 
                                                                                    fun(order, ix); });
                                                                              

                                                                              и так
                                                                              orders_list.forEach((order) ->
                                                                              {
                                                                                 ...
                                                                              }); 
                                                                              

                                                                                –9
                                                                                Ну вообще все зависит от языка программирования. В том же Delphi "{" означает комментарий, либо "{$" директиву компилятору.
                                                                                  0
                                                                                  Интересно наблюдать за результатами голосования: первый и второй варианты уже несколько раз сменили лидерство :)
                                                                                  Имхо, автор злостный холиварщик!
                                                                                    0
                                                                                    Попробуйте на досуге создать голосовалку с 5ью вариантами «Черепаха» и удивитесь ;)
                                                                                      +1
                                                                                      Имхо в слове холиварщик нет смысла, как и в слове тролль. Если мне нравится живая дискуссия между людьми с разным мнением — значит я холиварщик? Если я хочу поговорить на животрепещущую тему, то я — тролль?
                                                                                      0
                                                                                      Стараюсь писать в новой строке. Если даже будет новый проект, то стараюсь убедить начальство перейти на этот стиль. Понимаю если IDE выделяет нужные области, подсвечивает скобки и т.д. Но когда открываешь просто в чем-либо для просмотра, то иногда трудно найти… «БЛИИН, а где же эта скобка открывается то.....».
                                                                                        +7
                                                                                        Пожалуй я приложу картинку :)
                                                                                        image
                                                                                          +1
                                                                                          Удивительно. Прямо 1 в 1. Сейчас 257 vs 257
                                                                                          • UFO just landed and posted this here
                                                                                              0
                                                                                              Когда как, выбирает обычно кто-то другой. Но для своих проектов предпочитаю в отдельной строке. Единственное исключение иногда допускаю (когда думаю, что код никто не увидит :) )
                                                                                              if (1)
                                                                                              {
                                                                                                doSomething();
                                                                                              } else {
                                                                                                doSomething();
                                                                                              }

                                                                                              а то действительно жирновато 3 строчки на один else.

                                                                                              P.S. Ещё тема для coding style холивара Си-образных: ставить ли скобки когда в блоке один оператор то есть первый пример vs:
                                                                                              if (1)
                                                                                                doSomething();
                                                                                              else 
                                                                                                doSomething();
                                                                                              }
                                                                                                –2
                                                                                                В питоне тоже фигурные скобки применяются
                                                                                                d = {'a':1, 'b':2}
                                                                                                  0
                                                                                                  Скриншот намба ту. Это война! :)
                                                                                                  image
                                                                                                    0
                                                                                                    офигеть! до сих пор ровно идут.
                                                                                                    0
                                                                                                    Я египтянин :)
                                                                                                      +1
                                                                                                      А как писать цикл с постусловием?
                                                                                                      do
                                                                                                      {
                                                                                                      }
                                                                                                      while (a);

                                                                                                      или
                                                                                                      do
                                                                                                      {
                                                                                                      } while (a);
                                                                                                        +1
                                                                                                        Да. Вот постусловие в этом варианте форматирования — полный вынос мозга. Хотя постусловие само по себе — очень странная штука, не люблю его и никогда не юзаю.
                                                                                                          0
                                                                                                          Постусловие делает некоторые циклы естественнее, к чему, по-моему, и нужно стремиться. Циклы с постусловием используются, если нужно, чтобы код выполнился хотя бы один раз.
                                                                                                        0
                                                                                                        Не имею обыкновения ругаться, когда вижу, что человек поставил скобку не в той строке. Но ругаюсь, когда он вообще ее не поставил.
                                                                                                          0
                                                                                                          Почитав вас, захотелось вернуться к Python'у.
                                                                                                            0
                                                                                                            Делаю так:

                                                                                                            if (statement)
                                                                                                               //only one line of code

                                                                                                            if (statement) {
                                                                                                               //first line of code
                                                                                                               //second line of code
                                                                                                            }

                                                                                                            if ( (firstStatement && secondStatement) ||
                                                                                                                 (thirdStatement) )
                                                                                                            {
                                                                                                            }
                                                                                                              0
                                                                                                              Вообще можно было бы в опросе указать, о каком языке программирования речь. Потому что вполне может быть, что на одном так, а на другом иначе.

                                                                                                              Кроме того, фигурные скобки тоже бывают разные, одни для if-блоков, другие для функций, третьи для объектов, и соответственно могут разниться соглашения.
                                                                                                                0
                                                                                                                Блок должен быть выделен:
                                                                                                                <функция/ключевое слово>
                                                                                                                {
                                                                                                                <код>
                                                                                                                }
                                                                                                                  0
                                                                                                                  Мои привычки (C++,C#):

                                                                                                                  if(condition) one_statement;
                                                                                                                  
                                                                                                                  if(condition) one_statement;
                                                                                                                  else one_statement;
                                                                                                                  
                                                                                                                  if(condition){
                                                                                                                    more than one statement
                                                                                                                  }
                                                                                                                  
                                                                                                                  if(condition){
                                                                                                                    more than one statement
                                                                                                                  }else{
                                                                                                                    more than one statement
                                                                                                                  }
                                                                                                                  
                                                                                                                  for(;;){
                                                                                                                    for(;;){
                                                                                                                      something
                                                                                                                    }
                                                                                                                  }
                                                                                                                  
                                                                                                                  do{
                                                                                                                     more than one statement
                                                                                                                  }while(condition);


                                                                                                                  И даже так (для соблюдения единообразия):

                                                                                                                  if(condition){
                                                                                                                    more than one statement
                                                                                                                  }else one_statement;


                                                                                                                  Таким образом, каждая открывающаяся скобка — там же, где оператор, закрывающаяся — на отдельной строке (если она не перед else).

                                                                                                                  Only users with full accounts can post comments. Log in, please.