Using strong typedef as a more lightweight alternative to Boost Parameter library?(使用强 typedef 作为 Boost Parameter 库的更轻量级的替代品?)
问题描述
我经常使用 Boost strong typedef 实用程序来提高我的程序的安全性.例如通过编写这样的代码:
I often use the Boost strong typedef utility to improve the safety of my programs. For example by writing code like this:
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));
这里的强 typedef 提高了代码的可读性和安全性.(如果参数以错误的顺序提供,编译器会报错,如果参数都是int
,则不会出现这种情况.)
The strong typedef here improves both code readability and safety. (The compiler will report an error if the arguments are provided in the wrong order, which would not have been the case if the arguments were all int
.)
我的问题是:
- 为此目的可以使用 BOOST_STRONG_TYPEDEF 吗?(文档非常简短.)
- 是否有更喜欢 boost 参数库的重要原因?
推荐答案
技术上:
- 有效
- 它增加了类型安全
实际上:
我不建议仅仅为了单个函数的参数而创建新类型(除非它是特定于该函数的枚举),类型应该渗透到应用程序中以避免反复使用强制转换.
I would not recommend creating new types just for the sake of a single function's parameters (unless it is an enum specific to this function), types should permeate the application to avoid casts being used over and over.
如果在整个应用程序中使用 X
、Y
、Width
和 Height
类型,那么不仅会不会没有演员表,但你的应用程序会更安全,文档也会更好(是的......我是一个类型怪胎).
If the types X
, Y
, Width
and Height
are used throughout the application, then not only will there be no cast, but your application will be much safer and much better documented too (yeah... I am a type freak).
现在,关于 Boost.Parameters,这是完全不同的.
Now, with regard to Boost.Parameters, this is completely different.
Boost.Parameters 可以(可能)在您已经有类型时添加.老实说,虽然我从来没有看到需要.当您的函数变得如此笨拙以至于需要 Boost.Parameters 来调用它们时,您应该修复这些函数,而不是添加到混乱中.
Boost.Parameters can (potentially) be added when you have types already in place. Honestly though I never saw the need. When your functions grow so unwieldy that Boost.Parameters is required to call them, you should fix the functions, not add to the clutter.
这篇关于使用强 typedef 作为 Boost Parameter 库的更轻量级的替代品?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用强 typedef 作为 Boost Parameter 库的更轻量级的替代品?
基础教程推荐
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 从 std::cin 读取密码 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01