A menudo utilizo la utilidad de tipo de letra fuerte de Boost para mejorar la seguridad de mis programas. Por ejemplo, escribiendo código como este:Uso de typedef fuerte como una alternativa más ligera a la biblioteca Boost Parameter?
BOOST_STRONG_TYPEDEF(int, X)
BOOST_STRONG_TYPEDEF(int, Y)
BOOST_STRONG_TYPEDEF(int, Width)
BOOST_STRONG_TYPEDEF(int, Height)
struct Rect {
Rect(X x, Y y, Width w, Height h);
};
// Usage:
Rect rect(X(10), Y(20), Width(800), Height(600));
La fuerte typedef aquí mejora la legibilidad y la seguridad de código. (El compilador informará de un error si los argumentos se proporcionan en el orden equivocado, lo cual no habría sido el caso si los argumentos eran todos int
.)
Mis preguntas son:
- ¿Está bien use BOOST_STRONG_TYPEDEF para este propósito? (La documentación es very brief.)
- ¿Existen razones importantes para preferir la biblioteca de parámetros de refuerzo en su lugar?
depende de lo que quiere decir con 'ok', se compila y se ejecuta, supongo, así que qué hay de malo en eso. Veo tu lógica detrás de esto, pero parece 'equivocado' para mí. Hay una razón por la que puede nombrar varaibles y parámetros, por lo que tener a alguien explícitamente colocando 'int' en' Ancho' solo para pasarlo a establecer el parámetro 'ancho' parece incorrecto. Aunque puede ser útil tener 'set (width w);' etc. con solo 'int' no puedes hacer eso. – thecoshman
parámetro boost es para argumentos nombrados (e incluso opcionales), mientras que BOOST_STRONG_TYPEDEF * creará un nuevo tipo "nombre" que será sustituible por el tipo original pero aún de tipo distinto *. – Gigi