Re[5]: Смерть булевским аргументам!
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.09.09 09:02
Оценка:
Здравствуйте, mogadanez, Вы писали:

__>>>там ниже пишут про функции с WinAPI с пятью параметрами TRUE — что, правильнее сделать 32 функции? — это бред.

J>>Нет, просто вместо булевских параметров сделать енумы.
M>интересный вывод...
M>дядя Боб пишет что основная проьлема булевых аргументов
M>

M>Boolean arguments loudly declare that the function does more than one thing

M>енумы в этом смысле ничуть не лучше.

Любые неколичественные аргументы в этом смысле ничуть не лучше.

Вот пример из моих краёв. Ожидание сигнала по условной переменной делается в ядре FreeBSD4 (для простоты беру её) вызовом tsleep(var, prio), при этом прерываемость межзадачным сигналом задаётся битовым флажком PCATCH в prio, например:

tsleep(&softc->s_in, TTIPRI|PCATCH);

В Linux это же делается другой функцией — вместо sleep_on() вызывается sleep_on_interruptible(). Хотя на уровне шедулера их код совпадает на 90%, и всё, что внутри отличается в этом случае — простановка другого значения состояния задачи (TASK_UNINTERRUPTIBLE или TASK_INTERRUPTIBLE). Оптимизация в одну функцию с флагом напрашивается сама, но её не делают намеренно.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.