P:一些规则可以反映哲学主题。
P1:直接了当的,在代码中表现你的思想,而不是用注释。
class Date {
public:
Month month() const; // do
int month(); // don't
// ...
};
month的第1个声明是关于返回一个month类型。不修改Date类型。
void f(vector<string>& v)
{
string val;
cin >> val;
// ...
int index = -1; // bad, plus should use gsl::index
for (int i = 0; i < v.size(); ++i) {
if (v[i] == val) {
index = i;
break;
}
}
// ...
}
void f(vector<string>& v)
{
string val;
cin >> val;
// ...
auto p = find(begin(v), end(v), val); // better
// ...
}
一个设计良好的库表达意图(要做什么,而不仅仅是如何做)。
c++程序员应该了解标准库的基础知识,并在适当的地方使用它。
change_speed(double s); // bad: what does s signify?
// ...
change_speed(2.3);
change_speed(Speed s); // better: the meaning of s is specified
// ...
change_speed(2.3); // error: no unit
change_speed(23_m / 10s); // meters per second