|
Синтаксические несуразности C |
|
|
|
May 25 2012, 11:32
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
В условных конструкциях и циклах между оператором и скобками обычно ставят пробел: Код if () ... for () ... В функциях обычно пробел не ставят: Код foo(); Мне показалось это нелогичным. И я уже переправил некоторые свои исходники, добавил пробелы. Как вдруг обнаружилось, что в макрофункции пробел вообще недопустим! Код #define FOO() ... Пришлось возвращаться к отброшенному. Мне это не нравится! Собственно, вот и весь сказ. Вопросов не имею. Кроме одного - а чем вам еще не нравится синтаксис языка C?
|
|
|
|
|
May 25 2012, 12:01
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(ViKo @ May 25 2012, 15:32)  В условных конструкциях и циклах между оператором и скобками обычно ставят пробел: Код if () ... for () ... В функциях обычно пробел не ставят: Код foo(); Мне показалось это нелогичным. И я уже переправил некоторые свои исходники, добавил пробелы. Как вдруг обнаружилось, что в макрофункции пробел вообще недопустим! Однообразие достигается просто - не ставьте НИГДЕ пробелов между оператором и относящимися к нему скобками, и будет вам щастье.  Т.е. операторы for(), if(), while(), switch() допускают слитное написание, под стать функциям.
|
|
|
|
|
May 25 2012, 12:02
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(ViKo @ May 25 2012, 15:32)  И я уже переправил некоторые свои исходники, добавил пробелы. На этот случай есть автоформаттеры типа Astyle. Зачем делать тупую работу? Пусть машина думает. И вообще, пробелы перед скобками - это какое-то редкое извращение.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 26 2012, 17:15
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(haker_fox @ May 25 2012, 17:40)  Не всегда следует делать все так, как рекомендуют авторитеты. Необходимо иметь собственное мнение. В противном случае прогресс остановится Мне кажется, что лучше обратить внимание на четкие и грамотные комментарии, чем на форматирование текста... Хотя и оно играет немаловажную роль) С комментариями у меня все в порядке. Да и со стилем написания тоже. Так, несколько моментов душу бередят. Например, когда использовать /* ... */, а когда //. Делать ли пробелы в операторе for (i = a + b, i < 100, i = i + 10).
|
|
|
|
|
May 26 2012, 17:19
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(ViKo @ May 26 2012, 21:15)  Например, когда использовать /* ... */, а когда //. // лучше избегать в #define - некоторые препроцессоры таких вольностей не любят. Цитата(ViKo @ May 26 2012, 21:15)  Делать ли пробелы в операторе for (i = a + b, i < 100, i = i + 10). ИМХО, делать, но только не перед скобками.
|
|
|
|
|
May 27 2012, 04:46
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(aaarrr @ May 26 2012, 22:19)  ИМХО, делать, но только не перед скобками. А чего так? Я ставлю, и для меня это лишний быстрый признак, что сиё не функция. Цитата(ViKo @ May 25 2012, 16:32)  Мне показалось это нелогичным. Не пойму, что конкретно нелогичное? Дайте плиз ссыль на описание этой нелогичности. Из ветки неясно.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 27 2012, 07:15
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(GetSmart @ May 27 2012, 07:46)  Не пойму, что конкретно нелогичное? Дайте плиз ссыль на описание этой нелогичности. Из ветки неясно. Хочу, чтобы мое желание писать грамотно по-русски не вступало в противоречия с правилами синтаксиса C. http://ru.wikipedia.org/wiki/%D0%9F%D1%80%...%B1%D0%B5%D0%BBЦитата Правила постановки пробела рядом со знаками препинания 1. В русскоязычном наборе пробел ставится: ... с внешней стороны скобок и кавычек; ... Цитата(=AK= @ May 27 2012, 09:52)  У него БНФ ненормально распухшая, этим все сказано. Сказано недостаточно, растолкуйте. Я знаю только Белорусский Народный Фронт, да и то, скорее, усохший, чем распухший.
|
|
|
|
|
May 27 2012, 09:16
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(ViKo @ May 27 2012, 16:45)  Сказано недостаточно, растолкуйте. Форма Бэкуса-Наура используется для формального описания синтаксиса языков программирования. Простые и логичные языки, такие как Форт, Паскаль, Модула и пр., имеют краткую БНФ, в результате их легко осваивать и не возникает путаницы и непоняток при использовании. Языки типа С, PL1 и т.п. имеют сложную БНФ поскольку их синтаксис не очень последователен и логичен, в нем много "информационного шума".
|
|
|
|
|
May 27 2012, 09:33
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(aaarrr @ May 27 2012, 14:21)  Единая языковая конструкция. Так лучше? Не поверите, но тогда у меня с пробелом она тоже единая. Как собственно и в выражении a = b + c; никто не подумает, что она отличается от того же, без пробелов. Почему пробел должен менять эту "единость". Цитата(aaarrr @ May 27 2012, 14:21)  Дык я и не рассматриваю это иначе и уж точно не навязываю никому свое мнение. Потому и было написано ИМХО. У ТС изначально некорректно предложение. Там вопрос не в синтаксисе, а в оформлении ака удобстве. Если тексты на Си будут оформляться разнообразно, то что с того? Почему надо что-то запрещать?
Сообщение отредактировал GetSmart - May 27 2012, 09:44
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 27 2012, 09:39
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(GetSmart @ May 27 2012, 13:33)  Почему пробел должен менять эту "единость". Потому что человек все воспринимает по некоторому шаблону, "разрыв" шаблона ломает и восприятие. Утрированный пример: Код for /* Тут мы напишем десять строк комментариев, которые как-бы ничем не отличаются от пробела */ (x = 0; x < 10; ++x)
|
|
|
|
|
May 27 2012, 09:50
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(aaarrr @ May 27 2012, 14:39)  Утрированный пример: Правильнее - извращённый. Так пишут только извращенцы (разве нет?). Или поделитесь примером такого кода из сети. Речь шла только об одном пробеле между for и скобкой, естественно в одной строке. Этот вариант юзают многие программисты, адекватные и вобщем не дураки. Так зачем их так оскорблять? Может у Вас неправильный шаблон? У меня другие шаблоны - когда рядом с индентификатором впритык скобка - сиё есть функция. Скобка после пробела - сиё выражение в скобках. Обе цельноединые. ----- Давайте ещё обсудим где ставить открывающую фигурную скобку - в следующей строке, на позиции нижестоящей закрывающей, или в конце текущей строки и совсем не на позиции закрывающей. Вот эта тема куда более религиозная.
Сообщение отредактировал GetSmart - May 27 2012, 09:59
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 27 2012, 10:14
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(aaarrr @ May 27 2012, 15:08)  Только не надо разводить флуд и обсуждение на тему правильно-неправильно. Это ко мне что ли? Моё мнение изначально было, что вариант с пробелом имеет право быть. И только. Если я "защищал" вариант с пробелом, то это не значит, что я критикую вариант без пробела. Соответственно "защищать" вариант критикуемый ТС - не есть флуд.
Сообщение отредактировал GetSmart - May 27 2012, 10:26
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 27 2012, 13:03
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(aaarrr @ May 27 2012, 12:39)  Утрированный пример: Код for /* Тут мы напишем десять строк комментариев, которые как-бы ничем не отличаются от пробела */ (x = 0; x < 10; ++x) По-моему, так писать нельзя. Нельзя разрывать оператор комментариями. Обн. Нет, можно. В книжке вычитал. Для GetSmartНу, пусть называется "оформление" вместо "синтаксиса". Хотя для #define это уже не оформление, а именно синтаксис. Я, кстати, пишу так же, как и Вы. По-крайней мере, в отношении пробелов. И по той же причине.
|
|
|
|
|
May 27 2012, 15:12
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(andrew_b @ May 27 2012, 18:51)  #if 0 вам в помощь. Можно и так, вот только потом искать #endif без подсветки тяжко.
|
|
|
|
|
May 28 2012, 05:00
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(M_Andrey @ May 27 2012, 18:14)  А меня бесят комментарии типа /*...*/. Иногда надо быстро закомментировать процедуру, ан нет в процедуре кто-то написал 100500 таких комментариев и трындец! Нормальные IDE имеют хоткеи comment/uncomment. Например, в С::В это Shift-Ctrl-C/X. Проверил только что - box снимает без вопросов, а потом ставит нормальный человеческий //
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|