2008-10-15 12 views
35

He visto tanto el Named Parameter Idiom como el Boost::Parameter library. ¿Qué ventajas tiene cada uno sobre el otro? ¿Hay alguna buena razón para elegir siempre una sobre la otra, o podría ser que cada una de ellas sea mejor que la otra en algunas situaciones (y si es así, en qué situaciones)?C++ "Parámetro idiomático con nombre" vs. Boost :: Biblioteca de parámetros

+1

No tenía idea sobre ninguno de los dos. Solo los he pasado a los dos. Gracias Geek –

+0

No es suficiente para la respuesta: un código que usa 'Boost :: Parameter' siempre incorpora una transformación implícita no comprobable, +1 al idioma del parámetro nombrado – bobah

+1

¿Alguien puede agregar un enlace a una página funcional de" idioma de parámetro nombrado "? – xaxxon

Respuesta

20

Implementación del parámetro designado Idiom es realmente fácil, casi tan fácil como usar Boost :: Parameter, por lo que se reduce a un punto principal.

-¿Ya tienes dependencias de impulso? Si no lo hace, el parámetro Boost :: no es lo suficientemente especial como para agregar la dependencia.

Personalmente, nunca he visto el parámetro Boost :: en el código de producción, el 100% de las veces se trata de una implementación personalizada de Parámetros nombrados, pero eso no es necesariamente algo bueno.

+0

Gracias. Ya tengo dependencias de Boost, pero en su lugar iré con los parámetros nombrados. –

0

Nunca he oído hablar de ninguno, pero revisar los enlaces, el parámetro nombrado es MUCHO más fácil y más obvio de entender. Lo elegiría en un abrir y cerrar de ojos sobre la implementación de impulso.

2

La expresión de parámetros nombrados es mucho MÁS simple. No puedo ver (ahora mismo) por qué necesitaríamos la complejidad de la biblioteca Boost :: Parameter. (Incluso los parámetros Deducidos de la "característica" supuesta, parecen una forma de introducir errores de codificación;))

15

Normalmente, soy un gran admirador de Boost, pero no usaría la biblioteca Boost.Parameter para un par de razones:

  1. Si usted no sabe lo que está pasando, la llamada parece que estás asignando un valor a una variable en el ámbito en la función de llamada antes de hacer la llamada. Eso puede ser muy confuso.
  2. En primer lugar, es necesario un código repetitivo para configurarlo.
+3

Con este mismo razonamiento, debemos eliminar plantillas de C++ porque son complejas y confusas. Se llama "aprendizaje" – Raindog

+15

Las plantillas agregan una gran cantidad de poder al idioma. No creo que puedas decir lo mismo sobre los parámetros nombrados. El hecho de que algo sea complejo no significa que sea útil. – Ferruccio

2

Probablemente no desee Boost.Parameter para la lógica de la aplicación general tanto como lo desearía para el código de la biblioteca que está desarrollando, donde puede ahorrar bastante tiempo para los clientes de la biblioteca.

9

Otro punto, aunque nunca he usado Named Parameter Idiom, he usado Boost Parameter para definir hasta 20 argumentos opcionales. Y, mis tiempos de compilación son una locura. Lo que solía tomar un par de segundos, ahora lleva 30 segundos. Esto se suma si tienes una biblioteca de cosas que usan tu pequeña aplicación que escribiste usando el parámetro boost. Por supuesto, podría estar implementándolo incorrectamente, pero espero que esto cambie, porque aparte de eso, realmente me gusta.

Cuestiones relacionadas