> Что мне ни о чём не говорит, я спросил. Ваши аргументы были
> бы понятны, если бы примеры им соответствовали. Вы же в аргументах
> упомянули макросы в нижнем регистре, а в примерах кроме однобуквенных идентификаторов
> и числовых констант (с которыми я, кстати, согласен) ничего нет. Вы уверены? =)
> s = new(char, a + 1 + b + strlen(e) + 1);
https://github.com/systemd/systemd/blob/09541e49ebd17b41482e...
> #define new(t, n) ((t*) malloc_multiply(sizeof(t), (n)))
.
> "Эпизодически" я сталкиваюсь, по крайней мере, с си и явой. И после
> явы, си - это глоток свежего воздуха, отчасти именно потому, что
> в яве когда читаешь идентификатор и доходишь до конца, можешь уже
> забыть, как он начался.
Т.е. вы сталкиваетесь/сравниваете с другой крайностью и считаете одну из них приемлемей, а несогласных с этой самой приемлимостью — "фанатами" другой крайности? Как-то слишком уж радикально.
> Но в функции 11 смысловых строк (объявления переменных и проверки аргументов
> я не считаю). И мне кажется, что конкретно в данном случае,
Похоже, вас не переубедить. Пусть будет так. Хотя ковенции на то и конвенции, чтобы их придерживаться. Особенно учитывая, что хорошая такая часть кода дублируется в соседних "unit_name_replace_instance" "unit_name_template" – вместо копипасты можно было бы потратить немного времени на нормальные имена переменных.
И именно такие вещи обычно признак [эт-самого]-кода.
>> или вообще ненужное, как "strlen(e)"?
> Хм... вроде оно нужное. Как можно без него обойтись здесь?
Для вычисления достаточно длины f. А оная тут вычисляется аж по несколько раз )
unit_name_replace_instance() вызывается к примеру вот тут:
https://github.com/systemd/systemd/blob/6afe14ff5b91e6207200...
тут
https://github.com/systemd/systemd/blob/6afe14ff5b91e6207200...
или тут
https://github.com/systemd/systemd/blob/6afe14ff5b91e6207200...
И каждый раз вызову unit_name_replace_instance предшествует проверка:
unit_name_is_valid(...
https://github.com/systemd/systemd/blob/master/src/basic/uni...
Правда, в самой "unit_name_replace_instance" она так же присутствует.
И в этой проверке заодно вычисляется длина f, позиция е(xtension) и @ (причем и тут, если копнуть, то все это дублируются по нескольку раз. Например в