C ++ «Идиома именованного параметра» против Boost :: Библиотека параметров - PullRequest
36 голосов
/ 15 октября 2008

Я рассмотрел идиому именованных параметров и библиотеку Boost :: Parameter . Какие преимущества у каждого из них перед другим? Есть ли веская причина всегда выбирать один из других, или каждый из них может быть лучше другого в некоторых ситуациях (и если да, то в каких ситуациях)?

Ответы [ 6 ]

20 голосов
/ 15 октября 2008

Реализация идиомы именованных параметров действительно проста, почти так же проста, как использование Boost :: Parameter, так что все сводится к одной основной точке.

-У вас уже есть буст-зависимости? Если вы этого не сделаете, Boost :: параметр не является достаточно специальным, чтобы заслуживать добавления зависимости.

Лично я никогда не видел Boost :: parameter в производственном коде, 100% времени это была пользовательская реализация именованных параметров, но это не обязательно хорошо.

16 голосов
/ 15 октября 2008

Обычно я большой поклонник Boost, но я бы не стал использовать библиотеку Boost.Parameter по нескольким причинам:

  1. Если вы не знаете, что происходит, вызов выглядит как вы назначаете значение переменной в области видимости на вызывающей функции до звонить Это может быть очень запутанный.
  2. Слишком много стандартного кода, необходимого для его настройки.
9 голосов
/ 28 июля 2011

Еще один момент, хотя я никогда не использовал идиому именованных параметров, я использовал параметр повышения для определения до 20 необязательных аргументов. И мои времена компиляции безумны. То, что раньше занимало пару секунд, теперь занимает 30 секунд. Это складывается, если у вас есть библиотека вещей, которые используют ваше маленькое приложение, которое вы написали с использованием параметра boost. Конечно, я могу реализовать это неправильно, но я надеюсь, что это изменится, потому что кроме этого мне действительно нравится.

2 голосов
/ 22 октября 2008

Возможно, вам не нужен Boost.Parameter для общей логики приложения, так как вы хотели бы, чтобы он разрабатывался для кода библиотеки, который вы разрабатываете, и это может значительно сэкономить время клиентов библиотеки.

2 голосов
/ 15 октября 2008

Идиома Именованных Параметров НАМНОГО проще. Я не вижу (сейчас), почему нам нужна сложность библиотеки Boost :: Parameter. (Даже предполагаемая «особенность» выведенных параметров кажется способом введения ошибок кодирования;))

0 голосов
/ 15 октября 2008

Никогда не слышал ни того, ни другого, но просматривая ссылки, именованный параметр НАДО и проще для понимания. Я бы выбрал это в одно мгновение по поводу реализации наддува.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...