Комментарии 87
И ещё хотелось бы знать, как себя чувствуют выбравшие второй пункт, написав конструкцию } else { :)
Нормально.
прекрасно!
}
else
{
}
else
{
А меня почему-то коробит, что какой-то жалкий else занимает аж три строки.
зато от скобки к скобке невероятно удобно глазами по коду перемещаться!
Код не должен быть компактным, код должен быть читаемым
НЛО прилетело и опубликовало эту надпись здесь
Для чего код должен быть компактным?
Компилятору это без разницы, а вашим коллегам по команде читаемость важнее.
Наличие большого числа комментариев в коде отлично сказывается на его читабельности и отрицательно влияет на его компактность.
Длинные, осмысленные имена переменных уменьшают компактность кода, но увеличивают его читаемость.
Хоть в теории идеальный код — читаемый и компактный, на практике — эти понятия часто противостоят друг другу.
Компилятору это без разницы, а вашим коллегам по команде читаемость важнее.
Наличие большого числа комментариев в коде отлично сказывается на его читабельности и отрицательно влияет на его компактность.
Длинные, осмысленные имена переменных уменьшают компактность кода, но увеличивают его читаемость.
Хоть в теории идеальный код — читаемый и компактный, на практике — эти понятия часто противостоят друг другу.
Для маленьких проектов — да. От 2-3 MLOC когда нужно пойти посмотреть какую-нибудь логику в программе и выглядит это действо как «go to definition» -> «find all references» -> «go to defenition» -> «go to definition» ->… и перед глазами мелькают сотни экранов кода — разница между читаемостью и компактностью, увы, начинает ролять даже на таких мелочах как «спрятанные» фигурные скобки :(
любое
предложение
в
котором
переводы
строк
на
каждом
шагу
является
плохо
читаемым
предложение
в
котором
переводы
строк
на
каждом
шагу
является
плохо
читаемым
Вы тут на else не наговаривайте!
Можно Code Folding использовать, и даже 1000 строк легко поместится на экране :)
НЛО прилетело и опубликовало эту надпись здесь
за живое задел)
Те кто второй пункт выбирают, так не пишут, скорее уж как-то так:
if (statement)
{
...;
}
else
{
...;
}
Вполне комфортно:
}
else
{
}
else
{
я так пишу
if(){
}
else{
}
Пока устраивает.
if(){
}
else{
}
Пока устраивает.
Сравните это с кодом сверху. Хоть код самый простой, но уже как-то мозгу неприятно.
вы по-моему нервируете и тех и тех (8
Конечно. Потому, что перед фигурной скобкой должен быть пробел.
А еще меня выворачивает когда пишут
if (statement) {
doSomething();
}
else {
doAnotherThing();
}
А еще меня выворачивает когда пишут
if (statement) {
...
} else { // арррррр!
...
В отдельной строке взглядом быстрее отлавливаются, когда пробегаешься по коду.
Программирую и на php и на javascript, всегда ставлю на той же строчке с ключевым словом, ровно как и двоеточие:
function name() {
/**/
} else {
/**/
}
foreach ():
/**/
else:
/**/
endforeach;
Смысл не визуальный, а скорее принадлежности фигурной скобки к имени функции.
function name() {
/**/
} else {
/**/
}
foreach ():
/**/
else:
/**/
endforeach;
Смысл не визуальный, а скорее принадлежности фигурной скобки к имени функции.
Ээ, а где 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(); ... }
Кстати, использование этого стиля не мешает мне писать на питоне, шелле и лиспе. Питон – это форсирование отступов, а не стиля скобок.
Честно, не знал что так пишут. По-моему это какая-то классовая дискриминация ключевых слов :)
Это пошло с тех времен, когда мониторы были очень маленькие, текстовые редакторы очень простые а программы короткие. Сейчас, увы, времена изменились и проекты от 10 MLOC — норма жизни. Читаемость выползла на первое место и начала жрать скобки :(.
ну мне все еще удобно и привычно ставить скобки именно так :)
НЛО прилетело и опубликовало эту надпись здесь
Автоформатирование тоже можно настроить по-разному, нет?
Это поведение во всех утилитах форматирования кода, является настраиваемым.
Каждый перевод строки 2 байта в Windows (с кодами 10 и 13), в Unix'ах по-моему только один байт. Но всё же это влияет на «вес файла».
А я пишу так, как договорились с остальными участниками проекта.
Обычно в C# пишу { в отдельной строке. В Java, PHP — в конце строки с управляющей инструкцией.
Обычно в C# пишу { в отдельной строке. В Java, PHP — в конце строки с управляющей инструкцией.
И ещё интересно, чем я заслужил понижение кармы? :) Те кто минусанул объясните пожалуйста мне на будущее.
в карму по утрам я не плюю, но раз уж минусанул топик — расскажу
дело в том, что опрос этот… стар как мир. тема скобок настолько избита, что даже тут про это есть.
спрашивается, зачем ещё один опрос на эту тему?
да и сам опрос плохой, холиварный :( если вы работаете в команде, то вы должны придерживаться стандарту оформления принятым в этой команде. а команда, в свою очередь, должна придерживаться стандартам принятым для этого языка/средства разработки.
на будущее: не делайте опрос «Как вы именуете переменные?» :)
дело в том, что опрос этот… стар как мир. тема скобок настолько избита, что даже тут про это есть.
спрашивается, зачем ещё один опрос на эту тему?
да и сам опрос плохой, холиварный :( если вы работаете в команде, то вы должны придерживаться стандарту оформления принятым в этой команде. а команда, в свою очередь, должна придерживаться стандартам принятым для этого языка/средства разработки.
на будущее: не делайте опрос «Как вы именуете переменные?» :)
Спасибо за ответ. Но вообще я давно на хабре и такого опроса что-то не помню. Холивары были да, но не было топика, который дал бы чётко понять на какой стороне большинство.
Но вообще я давно на хабре и такого опроса что-то не помню.
может связано с тем, что тема устарела ещё раньше?
но не было топика, который дал бы чётко понять на какой стороне большинство
а ваш топик открыл нам глаза? :)
написали бы уж тогда большую статью на тему что ды как и почему так. есть много интересных историй на тему форматирования кода. к примеру, почему в С++ использовалось слово template
а на тему вашего опроса… нужна большая железная линейка. этой линейкой надо бить по рукам тем, кто ставит скобки не так как остальные разработчики в команде.
RE: может связано с тем, что тема устарела ещё раньше?
RE: а ваш топик открыл нам глаза? :)
А что делать тем, кто тогда ещё не родился? =) Лично я на данный момент доволен возникшим обсуждением и рад что увидел мнение более опытных людей. Это полезно. Наверняка, я не один такой — вон сколько тут пхпшеров набежало.
RE: а ваш топик открыл нам глаза? :)
А что делать тем, кто тогда ещё не родился? =) Лично я на данный момент доволен возникшим обсуждением и рад что увидел мнение более опытных людей. Это полезно. Наверняка, я не один такой — вон сколько тут пхпшеров набежало.
НЛО прилетело и опубликовало эту надпись здесь
Если вы пишите на php (а уж тем более на ZF), то рекомендуется открывающую скобку оставлять в той же строке при применении конструкции if/else. И на новой в случае функции/метода.
Стандарт кодирования на PHP в Zend Framework'е
Стандарт кодирования на PHP в Zend Framework'е
Вот он — золотой комментарий.
Главное не то, где и как вы пишите скобки, а то, соблюдаете ли вы выбранную в вашей организации конвенцию. Можно одновременно работать на более чем одном проекте с разными соглашениями и одновременно использовать оба варианта и оба случая будут идеальными.
Если не изменяет память, это хорошо разжёвано тут.
Главное не то, где и как вы пишите скобки, а то, соблюдаете ли вы выбранную в вашей организации конвенцию. Можно одновременно работать на более чем одном проекте с разными соглашениями и одновременно использовать оба варианта и оба случая будут идеальными.
Если не изменяет память, это хорошо разжёвано тут.
Очень долго ставил скобку на новой строке. Но где-то год назад у меня что-то переклинило и я перешёл на египетский стиль (скобка в той же строке).
ИМХО, кто часто польузется мышкой для перемещения курсора — те чаще ставят фигурную скобку на отдельной строке. Кто пользуется только клавиатурой (vim/emacs) — те чаще используют «египетские» скобки. Я использую «египетский» стиль — чтение кода не затрудняется, а навигация по коду, с использованием только клавиатуры, происходит быстрее. «if», "{", "}" и «else» — это не настолько сложные операторы, чтобы будучи в одной строке, они как-то затрудняли чтение.
Первый способ.
Компактнее, визуально ничем не устапает второму, так как вложенность прослеживается отступами.
Компактнее, визуально ничем не устапает второму, так как вложенность прослеживается отступами.
В зависимости от того, как фолдятся блоки внутри скобок
в MS Visual Studio
в xCode
при сворачивании дает
в 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 {...}
А чисто моего варианта нет в опросе. Не могу сказать, по какой причине (кажется, с каким-то фреймворком работал, и там так было принято), но я почему-то для себя такое правило выработал: если объявление класса или функции — скобка на новой строке, а если управляющая конструкция — на той же.
Т.е. как-то так:
Т.е. как-то так:
function a()
{
if (1=1) {
// nothing
} else {
// noting too
}
}
Сам использую такой стиль. Подсмотрел здесь.
А где вариант: зависит от framework / стандарта кодирования?
Не по феншую :). Многолетнее использование одного стиля дает к нему affinity и позволяет с высокой скоростью читать и писать код. Особенно читать.
Феншуй — не догма, а руководство к действию :)
Если что-то пишешь с импользованием фреймворка (тем более, если это некий «придел» вроде плагина, модуля, библиотечного класса и т.д.), то порой более «феншуйным» будет использовать не собственные традиции и привычки, а те нотации, которые декларированы в этом фреймворке.
Если что-то пишешь с импользованием фреймворка (тем более, если это некий «придел» вроде плагина, модуля, библиотечного класса и т.д.), то порой более «феншуйным» будет использовать не собственные традиции и привычки, а те нотации, которые декларированы в этом фреймворке.
НЛО прилетело и опубликовало эту надпись здесь
В новых проектах — оставляю "{" на предыдущей строке.
В уже существующих проектах — использую стиль, принятый в проекте.
В уже существующих проектах — использую стиль, принятый в проекте.
Я ставлю по ситуации:
и так
и так
и так
_each(list_fields, (field, fun) -> {
act_tmpl.getRange(Rect.VShift(act_names[field], ix, true)).Value =
fun(order, ix); });
и так
orders_list.forEach((order) ->
{
...
});
Ну вообще все зависит от языка программирования. В том же Delphi "{" означает комментарий, либо "{$" директиву компилятору.
Интересно наблюдать за результатами голосования: первый и второй варианты уже несколько раз сменили лидерство :)
Имхо, автор злостный холиварщик!
Имхо, автор злостный холиварщик!
Стараюсь писать в новой строке. Если даже будет новый проект, то стараюсь убедить начальство перейти на этот стиль. Понимаю если IDE выделяет нужные области, подсвечивает скобки и т.д. Но когда открываешь просто в чем-либо для просмотра, то иногда трудно найти… «БЛИИН, а где же эта скобка открывается то.....».
Пожалуй я приложу картинку :)
Удивительно. Прямо 1 в 1. Сейчас 257 vs 257
НЛО прилетело и опубликовало эту надпись здесь
Когда как, выбирает обычно кто-то другой. Но для своих проектов предпочитаю в отдельной строке. Единственное исключение иногда допускаю (когда думаю, что код никто не увидит :) )
а то действительно жирновато 3 строчки на один else.
P.S. Ещё тема для coding style холивара Си-образных: ставить ли скобки когда в блоке один оператор то есть первый пример vs:
if (1)
{
doSomething();
} else {
doSomething();
}
а то действительно жирновато 3 строчки на один else.
P.S. Ещё тема для coding style холивара Си-образных: ставить ли скобки когда в блоке один оператор то есть первый пример vs:
if (1)
doSomething();
else
doSomething();
}
В питоне тоже фигурные скобки применяются
d = {'a':1, 'b':2}
Скриншот намба ту. Это война! :)
Я египтянин :)
А как писать цикл с постусловием?
или
do
{
}
while (a);
или
do
{
} while (a);
Да. Вот постусловие в этом варианте форматирования — полный вынос мозга. Хотя постусловие само по себе — очень странная штука, не люблю его и никогда не юзаю.
Не имею обыкновения ругаться, когда вижу, что человек поставил скобку не в той строке. Но ругаюсь, когда он вообще ее не поставил.
Почитав вас, захотелось вернуться к Python'у.
Делаю так:
if (statement)
//only one line of code
if (statement) {
//first line of code
//second line of code
}
if ( (firstStatement && secondStatement) ||
(thirdStatement) )
{
}
if (statement)
//only one line of code
if (statement) {
//first line of code
//second line of code
}
if ( (firstStatement && secondStatement) ||
(thirdStatement) )
{
}
Вообще можно было бы в опросе указать, о каком языке программирования речь. Потому что вполне может быть, что на одном так, а на другом иначе.
Кроме того, фигурные скобки тоже бывают разные, одни для if-блоков, другие для функций, третьи для объектов, и соответственно могут разниться соглашения.
Кроме того, фигурные скобки тоже бывают разные, одни для if-блоков, другие для функций, третьи для объектов, и соответственно могут разниться соглашения.
Блок должен быть выделен:
<функция/ключевое слово>
{
<код>
}
Мои привычки (C++,C#):
И даже так (для соблюдения единообразия):
Таким образом, каждая открывающаяся скобка — там же, где оператор, закрывающаяся — на отдельной строке (если она не перед else).
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).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Где вы ставите {?