C++设计模式与惯用法详解
1. 货币类设计考量
在设计货币类时,有几个关键因素需要考虑:
-标准考量:例如,必须考虑ISO 4217国际货币代码标准。
-用户显示:思考如何将货币值展示给用户。
-转换频率:明确货币转换的发生频率。
从测试角度来看,为货币类实现100%的单元测试覆盖至关重要,以此确保该类在所有情况下都能按预期工作。不过,货币类相较于纯整数表示存在一个小缺点,即会损失一点性能。在某些系统中,这可能会成为问题,但在大多数情况下,其优势会更为显著,要牢记过早优化是不可取的。
2. 特殊情况对象(空对象)
在函数或方法中返回nullptr是不可取的,应尽量避免。同时,异常仅应在真正的异常情况下使用,而非用于控制正常的程序流程。那么,对于那些并非真正异常的特殊情况,如内存分配失败,该如何处理,而不使用无语义的nullptr或其他奇怪的值呢?
以按名称查询客户为例,最初的查找方法如下:
Customer CustomerService::findCustomerByName(const std::string& name) { // Code that searches the customer by name... // ...but what shall we do, if a customer with t