21

例如,这是以下任何一项吗

  • 不好的做法
  • 不可读
  • 低效(对this指针的调用)
  • 这样做不好的任何其他原因

.

class Person {

    public:
        string name;
        Person(string name) {
            this->name = name;
        }

};

附言

怎么样Person(string name) : name(name) { }

4

2 回答 2

17

不,我不认为这是一个坏方法。有时我们甚至会面对来自不同库的相同方法名或属性名。这就是我们创建命名空间和类来解决命名冲突的原因。

只要它不会导致混乱,你应该尽可能简单。即使他们使用相同的名称。但是,您不应该混合它们,例如:

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;
};
于 2013-08-04T12:32:03.540 回答
3

我能想到的唯一问题member variable(不是真正的问题)是您无法区分local variableor 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
        {
        }

};
于 2013-08-04T12:08:26.560 回答