https://blog.tartanllama.xyz/simple-named-bools/
При вызове функции типа
явна видно проблема ненаглядности передаваемых параметров и, как следствие, отсутствие понимания намерений програмиста.
Что означает первый true, второй true и третий false ? Совершенно непонятно и надо заглядывать в определение функции.
Для разрешения данной проблемы можно использовать следующий подход
Недостаток очевиден - введены три переменные, абсолютно ненужные для правильного исполнения кода, исключительно для улучшения читабельности. Дополнительно происходит 'раздутие' кодовой базы - вместо 1 строчки получается 4 строчки.
Можно попробовать и так
Лишних переменных нет, но также происходит 'раздутие' кодовой базы.
Данное затруднение является частным случаем того, что в языках С/С++ нет нативной поддержки так называемых именованных параметров. Много способов разрешить данную проблемы содержится в статье - https://habr.com/company/infopulse/blog/246663/. Также имеется мнение, что, по крайней мере в С++, именованные параметры в общем случае и не нужны - https://habr.com/post/246711/.
Simon Brand (blog.tartanllama.xyz) предлагает свое решение
Преимуществом является относительная наглядность, отсутствие 'раздутия' кодовой базы.
Недостатком является некоторая необычность синтаксиса.
При вызове функции типа
cake make_cake (bool with_dairy, bool chocolate_sauce, bool poison)
явна видно проблема ненаглядности передаваемых параметров и, как следствие, отсутствие понимания намерений програмиста.
auto c = make_cake(true, true, false);
Что означает первый true, второй true и третий false ? Совершенно непонятно и надо заглядывать в определение функции.
Для разрешения данной проблемы можно использовать следующий подход
const bool with_dairy = true;
const bool chocolate_sauce = true;
const bool poison = false;
auto c = make_cake(with_dairy, chocolate_sauce, poison);
Недостаток очевиден - введены три переменные, абсолютно ненужные для правильного исполнения кода, исключительно для улучшения читабельности. Дополнительно происходит 'раздутие' кодовой базы - вместо 1 строчки получается 4 строчки.
Можно попробовать и так
auto c = make_cake(
true /* with_dairy */,
true /* chocolate_sauce */,
false /* poison */
);
Лишних переменных нет, но также происходит 'раздутие' кодовой базы.
Данное затруднение является частным случаем того, что в языках С/С++ нет нативной поддержки так называемых именованных параметров. Много способов разрешить данную проблемы содержится в статье - https://habr.com/company/infopulse/blog/246663/. Также имеется мнение, что, по крайней мере в С++, именованные параметры в общем случае и не нужны - https://habr.com/post/246711/.
Simon Brand (blog.tartanllama.xyz) предлагает свое решение
#define K(name) true
auto c = make_cake(K(with_dairy), !K(chocolate_sauce), !K(poison));
Преимуществом является относительная наглядность, отсутствие 'раздутия' кодовой базы.
Недостатком является некоторая необычность синтаксиса.
El Yucateco | Casino & Resort in CA | MapyRO
ОтветитьУдалитьThe El Yucateco Resort & 평택 출장안마 Casino is 성남 출장안마 a 익산 출장샵 4-star resort, walk to El Yucateco Casino and 8 restaurants, a full-service spa, and 목포 출장마사지 a casino. Rating: 4.5 · 29 reviews · Price range: $$$How 거제 출장안마 is El Yucateco rated?What days are El Yucateco open?