例如,这是以下任何一项吗
- 不好的做法
- 不可读
- 低效(对
this
指针的调用) - 这样做不好的任何其他原因
.
class Person {
public:
string name;
Person(string name) {
this->name = name;
}
};
附言
怎么样Person(string name) : name(name) { }
例如,这是以下任何一项吗
this
指针的调用).
class Person {
public:
string name;
Person(string name) {
this->name = name;
}
};
附言
怎么样Person(string name) : name(name) { }
不,我不认为这是一个坏方法。有时我们甚至会面对来自不同库的相同方法名或属性名。这就是我们创建命名空间和类来解决命名冲突的原因。
只要它不会导致混乱,你应该尽可能简单。即使他们使用相同的名称。但是,您不应该混合它们,例如:
class Person {
public:
Person(name) {
this->name = name;
name = clean(this->name);
this->name = prefix + name;
}
private:
string name;
};
保持干净:
class Person {
public:
Person(name) {
name = clean(name);
name = prefix + name;
this->name = name;
}
private:
string name;
};
我能想到的唯一问题member variable
(不是真正的问题)是您无法区分local variable
or function parameter
。这只是编码风格,与效率无关,但是当您谈论 时Unreadable
,对我来说是的。
对我来说,我通常用尾随下划线命名类成员变量。它有助于代码的可读性并使其更易于维护。
class Person {
public:
string name_; // member variable with traling `_`
string m_surname; // some microsoft style declares member start with `m_`
Person(const string& name) // pass parameter by reference.
: name_(name) // you know you are constructing member name_ with name variable
{
}
};