最近我发现参数 http://www.boost.org/doc/libs/1_50_0/libs/parameter/doc/html/index.htmlBoost 中的库。老实说,我不明白为什么这是 Boost 的一部分。当需要向函数传递多个参数时,您可以根据它们创建一个结构,例如:
struct Parameters
{
Parameters() : strParam("DEFAULT"), intParam(0) {}
string strParam;
int intParam;
};
void foo(const Parameters & params)
{
}
Parameters params;
params.intParam = 42;
foo(params);
这很容易编写和理解。
现在使用 Boost 参数的示例:
BOOST_PARAMETER_NAME(param1)
BOOST_PARAMETER_NAME(param2)
BOOST_PARAMETER_FUNCTION(
(void), // 1. parenthesized return type
someCompexFunction, // 2. name of the function template
tag, // 3. namespace of tag types
(optional // optional parameters, with defaults
(param1, *, 42)
(param2, *, std::string("default")) )
)
{
std::cout << param1 << param2;
}
someCompexFunction(param1_=42);
我认为这确实很复杂,而且好处也不是那么显着。
但现在我看到一些 Boost 库(Asio)使用了这种技术。
使用这个库传递许多参数是否被认为是最佳实践?
或者也许使用这个库有我没有看到的真正好处?
您会推荐在项目中使用这个库吗?