упаковка в структуру, плюсы и минусы
От: pauldr  
Дата: 23.07.06 13:06
Оценка:
Есть функция, типа:
unsgined foo(struct handle_t *handle, int32 *p, unsigned i1, unsigned i2, unsigned i3, int *err, struct a2 *a2);

a2, i[1-3] — имеют на самом деле более осмысленные названия.

проблема в том что те кто хотят использовать эту функцию или проводят code review не могут
запомнить что для чего в этой функции,
и им все время видя
foo(h, p, a + b, (c — d) << 2,...);

приходится заглядывать в ее определение чтобы понять что здесь происходит или чтобы
ее правильно вызвать.

возникла идея (используется C + gcc extensions),
сделать так

unsgined foo(struct handle_t *handle, struct request req)
{
int32 *p = req->p;
unsigned i1 = p->i1;
...
}

а вызывать так
struct request req = {
.p = p,
.i1 = a + b,
};
foo(h, &req);

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