参数的名称与成员变量的名称相同是不是很难?

时间:2013-08-04 12:01:09

标签: c++ syntax parameters this

例如,这是以下任何一种

  • 不良做法
  • 不可读
  • 效率不高(对this指针的调用)
  • 为什么这样做不好的任何其他原因

class Person {

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

};

P.S。

Person(string name) : name(name) { }

怎么样?

2 个答案:

答案 0 :(得分:4)

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

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

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;
};

答案 1 :(得分:0)

我能想到的唯一问题(不是真正的问题)是您无法将member variablelocal variablefunction 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
        {
        }

};