Моё внимание в интервью с разработчиками OpenBSD привлёк «клоп», который является, цитирую: …

Nov 03, 2007 12:21

… «хорошим примером, почему оператор ?: следует использовать с осторожностью, по кр. мере в замысловатых выражениях с макросами». Код этот из FreeBSD. Что же, больше нападок, чем на «?:», было, наверное, только на «goto». :-) Я лично считаю, что проблема тут совсем не в «?:», а в style(9), и это действительно проблема. Посмотрите на оригинал (с « ( Read more... )

грабли, programming, bug, comp.lang.c, bsd, ergonomics, comp.os.bsd, kernel, style, my idea, "freebsd", url

Leave a comment

Comments 30

dnovikoff November 3 2007, 06:32:13 UTC
вообще, выравниваение любых скобочных конструкций есть хороший тон =)) я бы сделал немного в другой стилистике и с меньшим количеством пробелов, но суть от этого не меняется. да и всё надо использовать в меру.

Reply

> я бы сделал немного в другой стилистике poige November 3 2007, 06:38:46 UTC
Запиши? - любопытно посмотреть.

Reply

Re: > я бы сделал немного в другой стилистике dnovikoff November 3 2007, 07:02:35 UTC
для начала, я бы сделал это в виде inline-функции =) и эту тучу скобочек заменил бы if'ами:

int
sblock(sb, wf)
{
if (sb->sb_flags & SB_LOCK) {
if (wf != M_WAITOK)
return EWOULDBLOCK;

return sb_lock(sb);
}

sb->sb_flags |= SB_LOCK;

return 0;
}

что-нибудь такое

Reply

> для начала, я бы сделал это в виде inline-функции =) poige November 3 2007, 07:06:41 UTC
Хм, я не про это. Вот есть макрос - как ты его записал бы, чтобы он стал читабельней? В данном случае, то есть, меня стиль оформления текста кода интересует.

Reply


some41 November 3 2007, 09:10:15 UTC
не шарите.

#define sblock(sb, wf) (((sb)->sb_flags & SB_LOCK) == 0 ? (sb)->sb_flags |= SB_LOCK, 0 : \
(wf) == M_WAITOK ? sb_lock(sb) \
: EWOULDBLOCK)

Reply

> не шарите. poige November 3 2007, 09:15:47 UTC
Я же не про то, как оптимальнее это сделать говорю, а как читабельнее.

Reply

Re: > не шарите. some41 November 3 2007, 09:16:46 UTC
а при чем тут оптимальность? код один и тот же. только оформление

Reply

> код один и тот же. только оформление poige November 3 2007, 09:22:43 UTC
Ну не совсем уж и тот же. А оформление - «табличное», какое ты и продемонстрировал, вовсе не так уж хорошо - оно завязано на подгонку (зачастую пробелами), и занимает больше места в ширину. Наглядность тоже ниже.

Reply


gadm November 3 2007, 12:08:23 UTC
Человек, который использует в C'шном коде «?:» - педераст. Dixi.

Reply

fenikso November 3 2007, 13:34:01 UTC
хе-хе, что, и даже для такого:

bool b=...;
int i = b?5:7;

?

Reply

Я же сказал в самом начале: ... poige November 3 2007, 13:37:58 UTC
«…
Что же, больше нападок, чем на «?:», было, наверное, только на «goto». :-)
…»

Reply

fenikso November 3 2007, 13:41:51 UTC
Да я видел, видел. Мне просто стало интересно довести до крайне простого примера :) Хотя конечно можно писать и
int i=5;
if (...) i+=2;

:)) тоже две строчки

Reply


ex_sighup150 November 3 2007, 21:59:38 UTC
Не знаю. Мне нравится style(9)-conformant. Хотя, конечно, сам style(9) небезугрёбищен.

Reply


Leave a comment

Up