Как стать автором
Обновить

Комментарии 71

"Теперь у нас три немного отличающихся стиля кода"

Mandatory xkcd

image

Стилей по прежнему два, ведь не предлагается обязательно сохранять текст именно в таком виде. А если никто кроме конкретного разработчика не видит альтернативный стиль, значит для других его нет. Логично?

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

Предлагаю 4ый вариант. Сделать плагин который при открытии файла будет форматировать код под индивидуальные хотелки. А сохранять файл с общепринятыми в команде формате.

Четыре… И одна змея.
НЛО прилетело и опубликовало эту надпись здесь
K&R известные джаваскриписты.
Этот стиль появился когда JavaScript ещё даже в проектах не было.
Более того, Java получили из JavaScript отбросив «Script».
Скорее наоборот, когда Java хайпанула, livescript смотрелся как-то не очень:)

Были найдены на острове Java в санScriptских рунах

Мне чет не нравится как это выглядит (я сторонник "лишних" строк).

В go, кстати, второй вариант невозможен, только:


for i := 0; i < 10; i++ {
    fmt.Print("Hello world!")
    fmt.Print("Hello world again!")
}
Это. Паааадаждите. До скобок ещё надо решить — почему кто-то использует табы вместо пробелов. И только псоле этого можно притрагиваться к положению скобок.
Так принцип тот же — IDE на лету конвертирует в то, что вы хотите. Так что этот вопрос тоже решён.
Ага, а при коммите в git что будет?

Pre-commit hook, который будет проверять исходники на соответствие выбранному в проекте стилю оформления кода и бить по рукам.

Может тогда сразу IDE настроить на форматирование кода в стиле, который принят в этом проекте? А кому нравится по другому — пусть в pet-проектах занимается извращениями.
Это. Паааадаждите. Ещё надо решить — почему кто-то использует Mercurial вместо Git
Вспомнил сериал Кремниевая долина, где один из гг бросил девушку, потому что он использовал пробелы (или табы, уже не помню точно), а она наоборот.
Это. Паааадаждите. До скобок ещё надо решить — почему кто-то использует табы вместо пробелов. И только псоле этого можно притрагиваться к положению скобок.

Правильный стиль — tab indent space alignment (статьи есть в Инете и на Хабре). Т. е. писать только табами, только пробелами или их рандомной смесью — всё неверно, и лично для меня это лютый быдлокод. Правильно именно tab indent space alignment.

Ну да, а потом копируем ваши табы из вашего любимого редактора в буфер обмена и вставляем в форму на сайте. Например в SO. Или в Github. Или на другом таком же малоизвестном сайте. И потом говорим — это виноват Markdown, а табы — это правильно.

Вы прочитали что такое tab indent space alignment? Данный стиль не имеет ни одной проблемы. В том числе в приведённом Вами случае только этот стиль сможет отработать нормально, т. к.:


  • Если всё написать пробелами, юзер не сможет настроить величину отступов в браузере.
  • Если всё написать табами, поедет выравнивание.
  • А tab indent space alignment единственный стиль, который отработает корректно в приведённых Вами примерах.

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

Проблем из-за правильных табов (в tab indent space alignment) ровно ноль. Зато проблем от пробелов 100500.


Если кто-то использовал табы неверно — это не вина этого стиля. Ненавидьте всех, кто использует только табы или только пробелы, т. к. они все быдлокодеры (по моему мнению). Стиль не имеет отношения к этим людям.

А я ничего не буду говорить, просто сяду с попкорном и буду ждать когда кто-нибудь скажет слово "Python" и холивар разожжется еще сильнее.

Блин, а я терпел и молчал

Будет скучно — докиньте дровишек людям насчет отступов (TAB vs 4xSpace vs 2xSpace).
PEPов-то в С[++] нет.
PS. хотя есть рекомендации и прочие RFC, но кто ж их читает (судя по статье)?

А без скобок прикинуться питоном не получится?
Всё, ждём срочных обновлений спецификаций языков

Так вы сами языки меняете или только отображение скобочек в IDE?
Стандарт стоит поменять для того, что бы в нём было упоминание об альтернативном отображении текста. Не обязательно текст в таком виде сохранять, ведь IDE снова всё исправит при следующей загрузке. Но вот показать в стандарте удобный вариант отображения — это важно. Без стандартизации будет ситуация «кто в лес, кто по дрова».
Стандарт стоит поменять для того, что бы в нём было упоминание об альтернативном отображении текста.

Зачем?


Без стандартизации будет ситуация «кто в лес, кто по дрова».

Так и будет. Было два варианта, станет, с вашей помощью, три.

Хорошая идея. Остается убедить остальных членов команды )

Ожила увидеть что-то типа:


for int i = 0 ; i < 10 ; i++
    printf "Hello world!"
    printf "Hello world again!"

Нет скобок — нет проблемы с их расположением.

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

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


Поэтому нам нужен компромисс.

Мне не нужен, я не хочу писать на питоне, даже если это жаба. Меня вполне устраивают египетские скобки.


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

После чего у нас сломается парсер в IDE, отлично придумано.
Украшательства не должны вмешиваться в исходный код, для этого есть code folding.
Вот вам живой пример: Advanced Java Folding


Всё, ждём срочных обновлений спецификаций языков и массу удобных плагинов для всех возможных IDE

И переезда столицы в Нью-Васюки!

НЛО прилетело и опубликовало эту надпись здесь

Используйте BlueJ с выделением всех блоков кода внутри скобок с помощью цвета, если вы этого ищете. Правда там начинаются небольшие проблемы и производительностью IDE при более 300 строк кода. И засовывайте свои скобки куда хотите...

Не знаю о чём вы тут все спорите. У меня в Scratch-е такой фигни нет :)
Для VS давно решил данную проблему: Line Press
1) Увеличиваем расстояние между строк
2) Для пустых строк и строкам содержащим одиночные символы "{","}",")}" и т.п. делаем «компрессию»
И никакие фигурные скобки не отвлекают от структуры кода.

Одна из основных причин нежелания смотреть в сторону Rider
НЛО прилетело и опубликовало эту надпись здесь
Поналепили аргументов понимаешь… в эпоху короновируса нужно соблюдать расстояния:

for ( int i = 0; i < 10; i++ ) {
    printf ( "Hello world!" );
    printf ( "Hello world again!" );
}
После открывающей и перед закрывающей скобками пробелы не нужны по правилам любого языка.
Тем не менее есть такой стиль, повышающий читабельность. В простых примерах это не особенно заметно, а в большом потоке кода глазу зацепиться за аргументы. То-же относится к пробелу между именем функции и открывающей скобкой.
Не согласен. Иначе бы книги тоже писали так ( вот с такими пробелами внутри скобок ). Выглядит это плохо и читабельность совсем не повышает.

Вам никогда не приходило в голову, что требования к читаемости художественного, публицистического, научного и технического текста могут быть разными, и уж тем более — слабо коррелировать с требованиями к читаемости искусственного языка?


Скажем, в английском (да и в русском) языке в большей части случаев вокруг скобок требуется пробел: Parentheses should have spaces on either side, just like words., однако запись f(x), насколько я знаю, в математике считается правильной, в отличие от f (x).

Фигурные скобки надо ставить веде, иначе магии будет еще больше!
Один вопрос, вы это серьёзно? Вот прям до изменения стандарта языка?
скорее кодстайлов с встроением в иде макросов замены черт на скобки
То есть не особо-то что и изменилось, теперь действительно у нас три варианта расставления скобок, Вы вместо упомянтых двух стилей предложили делать так:
for ( int i = 0; i < 10; ++i)
{    printf( "hello world" );
     printf( "hello world again" );
}

причем еще и нижняя скобка абсолютно никак не говорит, что следующая за ней строка стоит в этом же блоке кода, отдельно интересно зачем заменять скобки на подчеркивания? читаемости это никак не добавило, ко всем сомнительным плюсам добавим, что и символ верхнего подчеривания просто так не напишешь, что было Вами и подмечено…
может просто договориться в какой стиль привести код перед коммитом, а дальше форматировать как удобно, благо функция автоформатирования под заданный стиль в IDE уже есть?
Вы вместо упомянтых двух стилей предложили делать так:

Нет, не так. А вот так:
for ( int i = 0; i < 10; ++i)
{    printf( "hello world" );
}    printf( "hello world again" );

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

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

Должно быть вот так:
for ( int i = 0; i < 10; ++i)
¯    printf( "hello world" );
_    printf( "hello world again" );

Здесь расцветка и длина верхнего символа изменены стилями страницы, но суть именно такая. Нижняя и верхняя черта визуально ограничивают всё тот же двухстрочный блок.
Так там он был во внешнем цикле, с такой постановкой скобок в моей аналогии, ну и вроде как не особо-то визуально стало легче((
А еще можно
#define begin {
#define end   }
И писать на си на паскале.
Милое дело, да.
Но там тоже свои заморочки

for (int i = 0; i < 10; ++i)             
begin 
    printf( "hello world" );
    printf( "hello world again" );       
end

или

for (int i = 0; i < 10; ++i)             
    begin 
    printf( "hello world" );
    printf( "hello world again" );       
    end
или

for (int i = 0; i < 10; ++i) begin 
    printf( "hello world" );
    printf( "hello world again" );       
end


И тут опять, первый красивее :)

<шутка про Lisp>

Скобки должны были быть круглыми
Если честно, за свои годы я так и не понял, каким образом открывание блока с новой строки повышает читаемость. При чем, со скобками еще норм, а этот вот begin ассоциируется с какой-то отдельной конструкцией. Возможно, все из-за того, что я начинал с бэйсика.
НЛО прилетело и опубликовало эту надпись здесь

Хорошему танцору программеру скобки мешают.

Надо действовать кардинальнее — заменим скобочки на begin end.
привет, паскаль?)
а после end будем писать, к чему он относился!

В языке Zimbu от создателя Vim, кстати, эта проблема решена радикально. Там нет открывающей скобки.


FUNC Main() int
  IO.write("Hello, World!\n")
  RETURN 0
}

Ох, жесть какая… Надо еще убрать открывающую круглую скобку и первую кавычку.

Закрывающая скобка занимает целую пустую строку. Это непорядок.

Все знают, что это лучший стиль

for (int i = 0; i < 10; i++)                 {
    if(i == 5)                               {
      Console.WriteLine("Hello world!")
                                             ;}
                                             }

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации