На сколько полезно использовать обертки над операторами?

Какие преимущества и недостатки могут быть у использования оберток для операторов из структуры <code>&lt;functional&gt;</code>, если рассматривать ситуацию, когда нужно обрабатывать массивы одинакового размера? Как можно передать оператор в функцию вместо его явного использования в нескольких функциях?
  • 3 мая 2024 г. 20:10
Ответы на вопрос 2
Использование оберток над операторами может быть очень полезным для улучшения читаемости и повторного использования кода. 

Преимущества использования оберток для операторов из структуры <code>&lt;functional&gt;</code> включают:
1. Удобство. Обертки позволяют передавать операторы в функции как аргументы, что упрощает код и делает его более понятным.
2. Гибкость. Обертки позволяют легко заменять операторы без необходимости изменения исходного кода.
3. Повышение производительности. Обертки могут использовать оптимизации, которые делают вычисления более эффективными.

Недостатки использования оберток для операторов из структуры <code>&lt;functional&gt;</code> могут включать:
1. Дополнительные затраты на обработку. Иногда использование оберток может вызвать небольшое увеличение времени выполнения программы из-за дополнительных накладных расходов на вызов функций.
2. Усложнение понимания кода. Некоторым разработчикам может быть сложно понять, как работают обертки над операторами, особенно если они не знакомы с этим подходом.

Чтобы передать оператор в функцию вместо его явного использования в нескольких функциях, можно воспользоваться указателями на функции или лямбда-функциями. Например, можно создать функцию, принимающую указатель на функцию-обертку и использовать эту функцию для применения оператора к массивам. Такой подход позволит сделать код более гибким и удобным для дальнейшего развития.
В библиотечных функциях - можно так сделать. В смысле, ваши функции используют непубличную функцию, передавая ей оператор. 

Но вы этот оператор передаете всего в нескольких местах на всю кодовую базу и все. Писать так функции, которые вы используете кучу раз - очень плохая идея.

И вообще, довольно редко есть смысл так заморачиваться. Код становиться хуже поддерживаемый. Экономите вы совсем чуть чуть повторяемого кода. А потом придется всякие заморочки делать, вроде, в делении надо проверять на 0, а в умножении проверять на переполнение и т.д. Этот общий код становиться уже чуть ли не длиннее если все по отдельности делать. И уж точно хуже читаемый.
Похожие вопросы