LINUX.ORG.RU

пробел перед скобкой

 


0

1

Вы ставите пробел перед скобкой или нет?)))

примеры:

if(true) или if (true)
while(true) или while (true)
for(;;) или for (;;)
printf("\n") или printf ("\n")
fflush(stdout) или fflush (stdout)

int main(){ return 0; } или int main (){ return 0; }

★★★★

Последнее исправление: quest (всего исправлений: 1)

Зависит от codestyle, прописанном на проекте.

Но вообще, обычно положено операторы(if, for, while, return итд отделять от скобок пробелом. Функции и макросы обычно не отделяются.
А вообще пишу так обычно:

if ( true )
while ( true )
for ( ; ; )
printf( "\n );
fflush( stdout );
int main()
{
    return 0;
}

deadline
()
printf("\n") или printf ("\n")

по идее не так критично как какой нибудь

mystr.clear() или mystr.clear ()

quest ★★★★
() автор топика
Последнее исправление: quest (всего исправлений: 1)
Ответ на: комментарий от quest

Почему? Как раз единообразно и позволяет сходу определить, где оператор, где функция. Понятно, что всё подсвечивается, но всё-же.

deadline
()
Ответ на: комментарий от deadline

Слишком общная постановка, даже для срача о стилях не годится.

if (true)
while (true)
for (;;)
printf("\n");
fflush(stdout);
sometimes( more(and(), even(), more()) );
int main() {
    return 0;
}

Kalashnikov ★★★
()
Ответ на: комментарий от x-signal

Пробелы после ключевых слов подчёркивают отличие их от вызовов функций.

Да наверно на этой формулировке и остановлюсь. Спасибо!

quest ★★★★
() автор топика
Ответ на: комментарий от anonymous

Ну я Кёрнигана и Ричи не очень, потому скобочка { будет строчкой ниже. А пробелы после скобок, просто сейчас текущий код стиль такой, привык, и позволяет не путаться в скобочках.
Например в выражениях вроде:

bar( (unsigned int)(foo) );
//или
if ( (foo & ~0x01) && (bar & FLAG) )

deadline
()
Ответ на: комментарий от deadline

int main() {
return 0;
}
Это Кёрниган да Ричи придумали так ? Ничего же не видно.
У меня половина кода с
begin
end;
так вообще глаза режет от такой записи.

ilovewindows ★★★★★
()
Ответ на: комментарий от ilovewindows

Ну по-крайней мере я этот стиль впервые у них в книге встретил. И он мне сразу не понравился

deadline
()

Пробелы ставлю всегда , ибо мне потом так читать проще.

З.Ы.: что это делает в development??

solovey ★★
()

по большому счету их должен ставить форматтер перед коммитом

trashymichael ★★★
()

Видел когда-то технику отделения скобок от имени функции пробелами в хедерах, чтобы искать объявления легче было. Не пользуюсь, бесполезно, по-моему.

А ключевые слова за меня подсветка синтаксиса выделяет.

schizoid ★★★
()

ставлю в языковых конструкциях (if, while, for,etc) и в объявлениях/определениях функций. при вызове функции не ставлю.

jeuta ★★★★
()
int main(){ return 0; } 
// или
int main (){ return 0; }
// или
int main() { return 0; }
// или
int main () { return 0; }

Вот, советую почитать, для примера: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

От таких инструкций стиль и зависит.

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)

Ужасть.

ОПЕРАТОР/СЛУЖЕБНОЕ СЛОВО _ПРОБЕЛ_ <...>

ИМЯ ФУНКЦИИ/ПЕРЕМЕННОЙ/КЛАССА_БЕЗ_ПРОБЕЛА_<...>

anonymous
()
Ответ на: комментарий от x-signal

Пробелы после ключевых слов подчёркивают отличие их от вызовов функций.

А что, так легко спутать ключевое слово с именем функции (которое и подсвечивается по-другому), что существует явная необходимость в таком «подчеркивании»?

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

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

x-signal ★★
()

Вы ставите пробел перед скобкой или нет?)))

я ставлю \n

int main(void)
{
    return 0;
}

drBatty ★★
()

if(true) или if (true)

а... Этот... А зачем его ставить? Может мне кто-нить рассказать?

ЗЫЖ я не ставлю.

drBatty ★★
()
Ответ на: комментарий от deadline

Почему? Как раз единообразно и позволяет сходу определить, где оператор, где функция. Понятно, что всё подсвечивается, но всё-же.

это насколько надо упороться, что-бы все 5 операторов C забыть??? Или сколько их там, которые со скобками?

drBatty ★★
()
Ответ на: комментарий от x-signal

Пробелы после ключевых слов подчёркивают отличие их от вызовов функций.

а зачем это подчёркивать, если ключевое слово не может быть rvalue (и тем более lvalue), а функция не может не быть? Ты случаем не забыл, что мы про C++?

drBatty ★★
()
Ответ на: комментарий от schizoid

Видел когда-то технику отделения скобок от имени функции пробелами в хедерах, чтобы искать объявления легче было.

это для тех, кто не осилил keyword\s*( что-ли?

drBatty ★★
()
Ответ на: комментарий от x-signal

Отличи́ть ключево́е сло́во о́т и́мени фу́нкции, да́ ещё́ с подсве́ткой си́нтаксиса, коне́чно, легко́. Но́ с пробе́лом ещё́ ле́гче.

фикс во имя удобочитаемости. Люби Россию, пи**!

drBatty ★★
()
Ответ на: комментарий от drBatty

Дело совершенно не в «забыть», а в том чтобы их было в тексте видно. И ты при взгляде на текст сразу видел где вызов функции а где какой нибудь while (!something);

Тем более что код иногда открывается не только в волшебных редакторах и IDE, но и, к примеру, во всякого рода merge- и diff- тулзах, где подсветки синтаксиса нет.

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

deadline
()
Ответ на: комментарий от deadline

Дело совершенно не в «забыть», а в том чтобы их было в тексте видно. И ты при взгляде на текст сразу видел где вызов функции а где какой нибудь while (!something);

вот именно. Как вслове «ещё́». Куда уж тут без ударения? А вдруг читатель прочитает как «е́щё»? Читатель-то у нас - индеец Майя, и русского никогда не слышал (но ЛОР почему-то читает).

Тем более что код иногда открывается не только в волшебных редакторах и IDE, но и, к примеру, во всякого рода merge- и diff- тулзах, где подсветки синтаксиса нет.

в vimdiff есть. в kdiff3 тоже есть. А свои тулзы можешь выкинуть на помойку.

drBatty ★★
()

Пробел ставится не перед скобкой, а после ключевого слова.

tailgunner ★★★★★
()
Ответ на: комментарий от deadline

Да? Особенно функции, которые возвращают void.

синтаксически они тоже функции. Такие rvalue, которые нельзя использовать как rvalue. И таких функций практически никогда не бывает. Не задумывался - почему?

drBatty ★★
()
Ответ на: комментарий от drBatty

вот именно. Как вслове «ещё́». Куда уж тут без ударения? А вдруг читатель прочитает как «е́щё»?

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

x-signal ★★
()
Ответ на: комментарий от deadline
if ( true )

Пробелы вокруг скобок - НЕНАВИСТЬ Еще одна крайность :)

slackwarrior ★★★★★
()
Ответ на: комментарий от x-signal

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

ты разве НЕ ПОНЯЛ, что ПОДЧЁРКИВАНИЕ ОЧЕВИДНОГО только затрудняет чтение? Как пробел после if или ударение в «ещё».

Ну и кроме того, ставить пробел после имени функции тоже допустимо(синтаксически), почему именно только после if? С моей т.з. if и foo одинаково связано со своими скобками, и с тем, что между ними. Мало того, foo без скобок имеет смысл (указатель на функцию), а вот if без скобок смысла не имеет. Потому, foo нужно использовать с пробелом, потому как foo - это отдельное понятие, к которому опционально можно добавить скобки. А if - это единый монолит, который без своих скобок смысла не имеет.

drBatty ★★
()
Ответ на: комментарий от drBatty

допустимо(синтаксически)

Некоторые еще в пустом теле конструктора точку с запятой ставят :) Проверка пионеров на следование конвенциям. Ну и... палят обязательно: табы у тебя или пробелы, потому что хорошо, когда ты «холоден или горяч», но когда ты «ни холоден, ни горяч» - т.е. в сорцах каша, адЪ и шизофрения - все «едет» от редактора к редактору - это реально бесит. Нужно не спорить «как», а один раз договориться в конкретном проекте - и делать так всем.

slackwarrior ★★★★★
()
Ответ на: комментарий от drBatty

Ударение действительно затрудняет чтение, а пробел после if, по-моему, нет. Это просто разные способы подчёркивания. У ударения есть побочные эффекты, у пробела - нет.

x-signal ★★
()
Ответ на: комментарий от slackwarrior

Некоторые еще в пустом теле конструктора точку с запятой ставят

я ставлю {}. А разве можно не ставить? Или можно ; без тела?

Ну и... палят обязательно: табы у тебя или пробелы

в каком смысле?

Нужно не спорить «как», а один раз договориться в конкретном проекте - и делать так всем.

с этим согласен. Но речь ведь о том, что мы открываем новый проект, и как оно более Ъ?

drBatty ★★
()
Ответ на: комментарий от x-signal

Ударение действительно затрудняет чтение, а пробел после if, по-моему, нет. Это просто разные способы подчёркивания. У ударения есть побочные эффекты, у пробела - нет.

дело тут совсем не в побочных эффектах, а в самом смысле пробела: сам по себе пробел в C не имеет никакого смысла, и его можно (не)применять между любыми лексемами кроме одного очевидного исключения - пробел необходимо ставить для разделения лексем, в том, и только в том случае, если эти лексемы без пробела сольются в одну. Например int main(void). Тут пробел необходим, ибо иначе получится intmain - новая лексема.

Раз так, то подчёркивание значения пробела, это подчёркивание разделения. Для этого например служат отступы:

int x = 10;
{
    int x = 20;
}
отступ тут подчёркивает разделение: мы не только говорим, что лексемы разные, а они очень разные - несмотря на то, что x называются одинаково, эти x - разные.

В связи с этим, пробел после if - бред полный. Как и пробел после функции. Возможно есть смысл ставить пробел в foo (), если эта foo не функция, а указатель на функцию. Тогда да - мы можем подчеркнуть _разделение_ указателя, и того, что делает из него «функцию». Какой смысл отделять if от того, что неразрывно связано с ним?

drBatty ★★
()
Ответ на: комментарий от quest

С указателями типа p-> () -> xxx (); будет не круто.

А зачем тут скобки? Не помню, чтобы приходилось такое использовать

rimsleur
()
Ответ на: комментарий от deadline

ага осбенно в языках где if, for и while реализованы как функция, т.е. во всех языках с нормальным дизайном

Deleted
()
Ответ на: комментарий от x-signal

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

Deleted
()
Ответ на: комментарий от olibjerd

Никогда не писал пробела перед скобкой, не знаю, почему.

Много лет писал, пока не понял, что скобки в операторах — это неотъемлемая их часть, компонент токена. if() без скобок в Си-like не бывает. А разрыв токена пробелом затрудняет восприятие. Так что теперь, много лет уже, пишу слитно :)

KRoN73 ★★★★★
()

люблю подобные темы :) между оператором и скобкой пробел ставлю, а между функцией и скобкой - нет

alextur89
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.