2008-10-15 1 views
35

Я просмотрел как Named Parameter Idiom, так и Boost::Parameter library. Какие преимущества у каждого есть над другим? Есть ли веская причина всегда выбирать один за другим, или каждый из них может быть лучше другого в некоторых ситуациях (и если да, то какие ситуации)?C++ «Именованный идентификатор параметров» против Boost :: Библиотека параметров

+1

Я понятия не имел о них обоих. Просто ушли, хотя они оба. Спасибо Geek – 2008-10-15 15:14:52

+0

Недостаточно для ответа: код с использованием `Boost :: Parameter` всегда включает неявное непроверенное преобразование, +1 к именованному параметру idiom – bobah 2014-02-12 18:58:37

+1

Может ли кто-нибудь добавить ссылку на рабочую страницу« named parameter idiom »? – xaxxon 2015-12-03 00:55:54

ответ

20

Реализация Именованного Идиома Параметров действительно проста, почти так же просто, как использование Boost :: Parameter, поэтому это сводится к одной основной точке.

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

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

0

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

2

Идиома Именованного параметра является более простой. Я не вижу (прямо сейчас), почему нам нужна сложность библиотеки Boost :: Parameter. (Даже предполагаемая «функция» Выведенные параметры, похоже, способ ввести ошибки кодирования;))

15

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

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

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

9

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

Смежные вопросы