Комментарии 71
"Теперь у нас три немного отличающихся стиля кода"
Смысл в удовлетворении разных желаний. Кто не хочет, тот не будет включать плагин, а кто хочет — сможет экономить много строк и не отказаться от привычного стиля в текстах, которые сохраняются на диск. Прозрачно, бесшовно, легко и непринуждённо. Как-то так.
Мне чет не нравится как это выглядит (я сторонник "лишних" строк).
for (int i=0;i<10;i++) {
printf("Hello world!");
printf("Hello world again!");
}
И где голосовалка?В go, кстати, второй вариант невозможен, только:
for i := 0; i < 10; i++ {
fmt.Print("Hello world!")
fmt.Print("Hello world again!")
}
Pre-commit hook, который будет проверять исходники на соответствие выбранному в проекте стилю оформления кода и бить по рукам.
Это. Паааадаждите. До скобок ещё надо решить — почему кто-то использует табы вместо пробелов. И только псоле этого можно притрагиваться к положению скобок.
Правильный стиль — 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" и холивар разожжется еще сильнее.
Всё, ждём срочных обновлений спецификаций языков
Так вы сами языки меняете или только отображение скобочек в 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 строк кода. И засовывайте свои скобки куда хотите...
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" );
То есть нижняя скобка сдвигается на строчку вверх. Иначе она так и будет занимать пустую строку. Но поскольку вместо скобки используется подчёркивание, всё выглядит как будто новые «скобки» выше и ниже блока кода.
Я воспользовался вашей аналогией и перенёс вами предложенную скобку на то место, куда предлагал это сделать в статье. При этом тело блока осталось прежним. И визуально блок остался бы тем же самым, если бы произошла замена скобок на верхнее и нижнее подчёркивание.
Должно быть вот так:
for ( int i = 0; i < 10; ++i)
¯ printf( "hello world" );
_ printf( "hello world again" );
Здесь расцветка и длина верхнего символа изменены стилями страницы, но суть именно такая. Нижняя и верхняя черта визуально ограничивают всё тот же двухстрочный блок.
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>
Хорошему танцору программеру скобки мешают.
Все знают, что это лучший стиль
for (int i = 0; i < 10; i++) {
if(i == 5) {
Console.WriteLine("Hello world!")
;}
}
Маленькое удобство, способное прекратить вселенские споры