LINUX.ORG.RU

по какой причине такое форматирование заголовков функций в сях

 ,


2

3

какие причины и преимущества вот такого нюанса форматирования при соблюдении в теле функций обычного 1TBS

int
namefunc (args,...)
{
        if(){
                sjdfhlksjdf();
        }else{
                lasfasf();
        }
        return wow;
}

собственно вопрос зачем открывающую скобку тела функции на отдельную строку , и часто (во многих местах) возвращаемый тип тоже на отдельной строке.

в чём польза(исходная ,ну и приобретённая) такого форматирования?

★★☆

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

и часто (во многих местах) возвращаемый тип тоже на отдельной строке.

Может, чтобы проще было грепать определение функции?

Ещё где-то слышал (одна бабка сказала), что такое форматирование было требованием для какого-то генератора документации по комментариям исходника, но сходу нагуглить ничего не смог.

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

wikipedia

In old versions of the C programming language, the functions, however, were braced distinctly. The opening function brace of a function was placed on the line following after the declaration section and at the same indentation level as the declaration (header of the function). This is because in the original C language, argument types needed to be declared on the subsequent line (i. e., just after the header of the function), whereas when no arguments were necessary, the opening brace would not appear in the same line with the function declaration.

Тип на отдельной строке для якобы удобочитаемости. Отдельные кадры даже аргументы разбивают по строкам. В сочетании с шаблонами заголовок иногда бывает раза в два больше, чем тело. Ябыубивал.

E ★★★
()

Первое это кослыи для редакторов и неосиляторов. В vim, например, можно прыгнуть вначало ф-ии по [[, но это работает если { идёт первым непробельным символом в строке. Можно сделать ремап типа

map [[ ][%0
и тогда будет работать в любом случае. Но не все способны погуглить и зафигачить пару строк в конфиг редактора. И мб меньше возьни при редактировании аргументов.

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

это отдельный когнитивнофилологический разговор о пользе и вреде нарушения автоматических конструкций языка , и как это влияет с одной стороны на понятность текста , с другой на запоминаемость.

qulinxao ★★☆
() автор топика

тип на отдельной строке удобен тем, что можно быстро найти грепом: grep -r ^namefunc

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

Отдельные кадры даже аргументы разбивают по строкам.

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

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

Тип на отдельной строке для якобы удобочитаемости. Отдельные кадры даже аргументы разбивают по строкам. В сочетании с шаблонами заголовок иногда бывает раза в два больше, чем тело. Ябыубивал.

А вот например:

http://repo.or.cz/w/official-gcc.git/blob/HEAD:/libstdc++-v3/include/bits/stl...

Весь (ну или типа того) std и boost так написан.

quasimoto ★★★★
()

Ох ты ж... Вот же «вопрос века». Кстати, в большей степени религиозно-холиварный.

Давно уже K&R сказали: если ты индивидуальный погроммист, выбери наиболее удобный для себя стиль форматирования и придерживайся его везде и всюду. Если работаешь в команде, придерживайся командного стандарта, чтобы чтение твоего кода не вызывало проблем у коллег.

В любом случае, у любого стиля форматирования можно накопать приблизительно одинаковое количество плюсов и минусов.

Гхм...личное as PS: Вот мне, например, возвращаемый тип на отдельной строке абсолютно не нравится — как-то глаза «мылит» при просмотре, не на том внимание концентрирует. А открывающая скобка тела функции на отдельной строке нравится (сам так делаю) — функции у меня небольшие, и мне лично так легче их визуально классифицировать. Но это — ещё раз — мои личные предпочтения.

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

дык речь не про как Правильно!!!

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

qulinxao ★★☆
() автор топика
Ответ на: комментарий от hvatitbanit

много кто поразному как .

речь вопрос о для чего вот этот вот вариант оказался удобен или следствие каких приёмов работы с текстом программ ( вот тот же вариант /^имяце/ вполне правдоподобная причина придерживатся)

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

Это надо спрашивать у каждого конкретного С-пописывателя: мотивацию, цепь причин и историю событий.

Я частично пояснил (лапидарно) в своём PSе. Но вдаваться в подробности и скрупулёзно вспоминать предысторию сейчас лень :-) Как-нибудь в следующий раз...

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

ну может где нить в k&r или в архивах почты это затронуто и кто нить на это укажет.

может из за необязательности возращаемого типа - про скобку на следующей строке уже вроде как дали хорошую гипотезу.

qulinxao ★★☆
() автор топика

чтобы по названию функции грепать удобнее было

^namefunc\s*\(

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

Для меня важнее всего удобство визуальное — для ковыряния в коде.

Хотя с аргументом удобства грепания по шаблону ^namefunc вполне согласен.

Опять же: на каждый плюс найдётся свой минус. И что же: каждый раз от минусов к плюсам стиль форматирования менять? Утопнешь в трёх соснах... :-)

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

ну может где нить в k&r

Даже не в K&R, а в K&P «The Practice of Programming» вся первая глава фактически и посвящена стилю. И очень многие элементы стиля объясняются и обосновываются.

И если я не путаю (склероз же), кое-что по обоснованию стиля было у Peter van der Linden в «Expert C Programming: Deep C Secrets».

Про архивы почты не скажу — по этому вопросу я не шерстил, слишком мелкая тема (imho).

DeVliegendeHollander ★★
()

Тем, что имена всех функций начинаются в одном столбце. В C++11 можно вот так писать.

auto getX() -> int;
auto getLength() -> float;

Тоже удобнее названия читать.

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

std и boost - это плохой пример для подражания. Скорее, наоборот, это сборник советов того, как делать не надо.

E ★★★
()

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

trex6 ★★★★★
()

«А можно сделать пиктограмму василькового цвета?»

nerdogeek
()
Ответ на: комментарий от nanoolinux
born_brown finit_old_corpusc(int x)

born_brown
finit_old_corpusc(int x)

Первая строчка читается хуже второй, т. к. название типа не подсвечено,
и вдобавок оно длинное. Раньше мониторы были чернобелые, без подсветки.
Наверно оттуда пошло.

oleg_2
()

собственно вопрос зачем открывающую скобку тела функции на отдельную строку , и часто (во многих местах) возвращаемый тип тоже на отдельной строке.

IRL я там комментарий пишу, который в vim'е виден даже когда функция свёрнута в складку.

int main() 
+-- 27 строк: {// комментарий----------------------------------------------------------------------------------

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

Отдельные кадры даже аргументы разбивают по строкам.

не все пишут helloworld'ы. Я не фанатег стиля, но даже для меня Over9000 букв в строке — перебор. Хотя конечно

int foo(
  int a
)

тоже идиотизм.

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

Но не все способны погуглить и зафигачить пару строк в конфиг редактора.

у меня без этого там Over9000 строк, не считая комментариев.

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

и как это влияет с одной стороны на понятность текста ,

у тебя только алфавит русский. А пишешь ты говно какое-то. И это ни разу не круто, детка.

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

блжад! достал уже! НЕПОНЯТНО ты пишешь. Я каждый раз как твои посты вижу, у меня возникает желание их в переводчик скопипастить.

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

наступит время и гугл автодиагностирует.

qulinxao ★★☆
() автор топика

Как уже много раз сказали выше, тип возвращаемого результата на отдельной строке — чтобы удобней грепать по имени функции ее реализацию, например с помощью plumb/acme. В Plan 9 (& port) во всех исходниках такой стиль.

А вот насчет скобок, слитных с if/else/etc, без пробела, не знаю, сам не люблю это.

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