[Перевод] Флаги в аргументах функций
|
|
Среда, 21 Февраля 2018 г. 09:27
+ в цитатник
Вы когда-нибудь сталкивались с таким кодом?
process(true, false);
Эта функция, судя по названию, что-то обрабатывает (process). Но что означают параметры? Какой параметр здесь true, а какой false? По вызывающему коду об этом нельзя судить.
Нам придется заглянуть в объявление функции, которое дает подсказку:
void process(bool withValidation,
bool withNewEngine);
Очевидно, автор использует два параметра типа bool как
флаги (toggles). Реализация функции может быть похожа на это:
void process(bool withValidation,
bool withNewEngine)
{
if (withValidation) // используется 1-й флаг
validate(); // % подтвердить
do_something_toggle_independent_1
if (withNewEngine) // используется 2-й флаг
do_something_new();
else
do_something_old();
do_something_toggle_independent_2();
}
Назначение флагов очевидно, поскольку каждый из них имеет осмысленное название. Проблема возникает в вызывающем коде.
Читать дальше ->
https://habrahabr.ru/post/349602/
Метки:
author clubs
c++
c++11
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-