LINUX.ORG.RU
ФорумTalks

Кто использует малопопулярные отступы в Си?

 , ,


1

1

Большинство людей использует стили Олмана или K&R. А есть здесь те, кто использует Уайтсмита или GNU (или даже лисп-стиль)? Вы используете стиль, потому что так принято у вас в коллективе или выбрали его сами? Коллеги не ругаются?



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

Большинство людей не знает названия «отступов».
И большинству людей на них насрать.
Каждый пишет как ему удобно или как принято в коллективе.

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

Бить гайдлайном!

Каждый пишет как ему удобно или как принято в коллективе.

Каждого кто пишет как ему удобно коллектив, рано или поздно, будет бить гайдлайном.

Camel ★★★★★
()
Ответ на: Бить гайдлайном! от Camel

коллектив

Коллектив иногда состоит из одного человека.
Иногда код пишется вне коллектива для внеколлективных нужд.
Иногда у коллектива нет гайдлайна.

3 вышеуказанных варианта покрывают около 80% случаев.

Stahl ★★☆
()
Ответ на: Linux от Camel

Зачем заголовки?

Если они не нужны

dvrts ★★★
()

Всегда думал, меня одного бесит вот так?

int main(void)
{
    blabla;
}

Всегда пишу так:

int main(void) {
    blabla;
}

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

unt1tled ★★★★
()

Для коллег можно прогнать код через astyle, а для себя можно и нужно писать код так как удобно тебе.

Dron ★★★★★
()
(setq c-default-style "stroustrup")

Просто нравится.

iVS ★★★★★
()

K&R 4ever! в коллективе используем то, что и весь коллектив. типично олман или k&r.

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

Всегда думал, меня одного бесит вот так?

Бесит, не понимаю смысл переноса фигурной скобки на новую строку.

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

Говорю же, для читаемости. Чтобы первая строка функции не сливалась ее с названием. Приходится или просто пустую строку оставлять или камент туда пихать.

unt1tled ★★★★
()

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

andreyu ★★★★★
()

Какой вообще смысл париться с этими стилями? Какой нравится, такой и использую! И без понятия, как он называется!

Eddy_Em ☆☆☆☆☆
()

А есть здесь те, кто использует Уайтсмита

Есть один коллега на работе. После него частенько гоняю автоформатирование в K&R стиль.

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

Всегда пишу так:

а вот если писать по другому (имена типов и функций ВСЕГДА с первого символа строки), то grep и sed ваши друзья по всякой кодо-навигации и документированию.

int
main (int argc,char *argv[]) 
{
   int t;
   ...
}

ps/ хотя сам такое не очень люблю, но этот стиль единственный чьё появление оправдывается необходимостью автоматизации, а не индивидуальным эстетством

MKuznetsov ★★★★★
()

всегда пишу в стиле:

int main( void )
{
   blabla;
};

поскольку иной стиль (K&R), с точки зрения надежности теряет графический контроль - парные скобки должны быть в одной и той же позиции. В такой «экономичности» K&R вижу дурной стиль поскольку читабельность и надежность кода ставлю на первое место (вместо экономии 1-ой строчки). Отступ уровня в 3 пробела (табуляцию не использую в С++), за последней фигурной скобкой следует «лишняя ;». Компилятору похер, а читающему - информация о завершении метода.

oblfan
()

Пишу как в java. И это не только к отступам относиться.

crowbar
()
int main( argc, argv )
int argc;
char *argv[];
{
    ...
                            while (x == y)
                            {
    something();
    somethingelse();
                        if (some_error)
                        {
  do_correct();
                        }
                        else
                        {
  continue_as_usual();
                        }
                            }

finalthing();
    ...
}

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

EXL ★★★★★
()

На работе Олман, дома GNU.

Вы используете стиль, потому что так принято у вас в коллективе или выбрали его сами? Коллеги не ругаются?

Иногда важен даже не «красивый стиль», а «одинаковый стиль у всего кода». Пусть это будет хоть «Whitesmiths style» (какой-то совсем упоротый), главное в коллективе — стиля единообразие.

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

парные скобки должны быть в одной и той же позиции

Кстати, часто замечаю, что такое форматирование использут обычно те, у кого отступ 1-2-3 пробела. Более длинные отступы оказываются достаточными, чтобы видеть уровень отступа и без скобок.

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

буду использовать гну-стиль

Гну-стиль выглядит красиво, но когда пытаешься разбираться в исходниках какого-нибудь glibc, то уровне на 5 вложенности уже перестаёшь понимать, какой кусок кода в какой вложен. С K&R такой проблемы нет.

pv4 ★★
()

Allman

А стили GNU и Whitesmith вместе с пользующимися ими должньі гореть в аду.

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

Работаю на огромном, очень старом и довольно широко используемом проекте. И там есть кодьі с использованием всех возможньіх стилей отступов. Такое разнообразие раздражает. Я к тому, что оно таки есть, и в больших и старьіх организациях тоже.

Deleted
()

Мне Microsoft Visual Studio сама табуляции расставляет.

xnick
()

Кто использует малопопулярные отступы в Си?

хорстманн сойдёт?

выбрали его сами

да

Коллеги не ругаются?

мои коллеги способны осилить astyle

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

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

автоформатирование кода? не, не слышал.

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

И там есть кодьі с использованием всех возможньіх стилей отступов. Такое разнообразие раздражает. Я к тому, что оно таки есть, и в больших и старьіх организациях тоже.

По вашему это хорошо? Руководителю проекта пофиг видимо на сам проект.

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

автоформатирование кода? не, не слышал.

При чем тут автоформатирование? Предлагаете на каждый push делать хук и форматировать код? А при pull форматировать его под себя? Ну флаг вам в руки.

andreyu ★★★★★
()

Но зачем? Всё, кроме allman/bsd — обфускат для машинного разбора. Ну, kr в самом крайнем случае ещё.

d_a ★★★★★
()

Пишу так как завещали отцы, то есть K&R. За gnu-style надо расстреливать на месте.

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

В том месте должен быть абзацный отступ, балансирующий блок и только он.

PS. Ты не подумай только ненароком, что я с тобой спорю, это пост в дополнение к ответу на "чем не устраивает хорстманн".

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

Ты не подумай только ненароком, что я с тобой спорю

ок, только, в таком случае, не забудьте добавлять ИМХО, а то уж больно как-то безапелляционно звучит. «В том месте должен быть абзацный отступ, балансирующий блок и только он.»

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

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

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

поскольку в том треде о своих предпочтениях в коде поведали только EXL и я, поинтересуюсь, почему вы считаете стиль Хорстманна упоротым?

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

Они не всерьёз, очевидно же. Бывает, адом грозят, чертями, котлами и вечными муками, ещё всякие способы находят разнообразить речь. Надо же на суть темы смотреть-то)

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

Это очень плохо, но я особо с этим ничего не могу поделать (кроме как писать так, как написан код вокруг того места, которое я меняю).

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

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

это понятно, но это, наверное, (хотя, может и ошибаюсь), говорит о том, что у них какое-то взвешенное мнение по этому поводу, идеология, может даже. вот и интересно выяснить.

next_time ★★★★★
()

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

template <typename ForwardIterT, typename Compare>
void sort_implementation(  // скобочки для аргументов располагаются так же, как и фигурные
    ForwardIterT first, ForwardIterT last, Compare compare_func,
    const std::forward_iterator_tag&
) {
    throw std::exception(); // not implemented yet
}

template <typename T>
class LazyEvaluated {
    ...
public:
    LazyEvaluated(std::function<T()> func)
        : object {}, initialized {false},  // а вот так располагаю список инициализации
        future(std::async(std::launch::deferred, func)) {}

    ...
};

static LazyEvaluated<std::string> fizzbuzz {[] {
    return std::string(fizz) + std::string(buzz);
}};  // Можно открыть и закрыть несколько скобочек в одном и том же месте

template <typename NumberT>
std::string one_buzz(NumberT i) {
    return (
        has_fizz(i) ?   // если бы в C++ if-then-else expression, было бы красивее. Оператор ? мне не очень нравится, но что поделать
            has_buzz(i) ?
                fizzbuzz()
                : fizz
            : has_buzz(i) ?
                buzz
                : std::to_string(i)
    );
}

Пожалуй в этих сниппетах я не показал, как расположил бы угловые скобочки в случае, когда шаблонные параметры не влезают в одну строку. Но это происходит у меня довольно редко, поэтому я пока даже не придумал, как бы это делал. Наверное по-хорошему надо делать гетерогенно - то есть так же, как с другими скобочками: Тут lor-code решил запутаться и превратить мои скобочки в какие-то теги, поэтому вот версия на pastebin http://pastebin.com/4hxchDeg

template <
    typename VeryLongTypenameMaybeEvenCalculatedDependingOnSomethingElse,
    typename AndAnotherOne
[quote][br][/quote]void function() {}

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

Есть только K&R, остальное от лукавого.

CYB3R ★★★★★
()

Пишу так:

void	logclose(void)
{
 if(logfile != NULL)
  {logwrite("Log file closed.");
   fclose(logfile);}
 
 logfile=NULL;  
}
Как называется?
В if`ах избегаю этого if(logfile) и стараюсь явно сравнивать на ноль.
Если есть сложное выражение, то разделяю его скобками, дабы точно знать как компилер воспримет его.
Стараюсь использовать понятные идентификаторы, а не FILE *f,*ff,*p и прочее - через пару лет легче будет разобраться в своём же быдлокоде.
В функциях параметры описываю сразу: int main(int argc, char **argv)

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