explorer

万丈高楼平地起,勿在浮沙筑高台

0%

C++ Core Guidelines:接口

通过阅读 CppCoreGuidelines 来理解现代 c++ 编码规范,同时也是对 Effective C++Effective Modern C++C++ Concurrency in Action 的温习。

让接口清晰

不能让接口还有一些隐藏属性,导致接口的行为是用户无法预知的。

比如下面的对浮点数取整:

1
2
3
int round(double d) {
return (round_up) ? std::ceil(d) : d; // don't: "invisible" dependency
}

有全局变量round_up来决定函数round来进行向上取整还是向下取整,这对用户来说是无法预知的。

为了使得接口清晰,需要让用户了解有这个设置项:

1
2
3
int round(bool round_up, double d) {
return (round_up) ? std::ceil(d) : d;
}

尽量避免non-const全局变量

non-const全局变量就可能: 1. 导致该变量被多处使用,造成依赖关系 2. data race

形参的检查