在C++中使用'this'是一个好习惯吗?

Top*_*opo 6 c++ coding-style

我想知道在C++中使用'this'是否是一个好习惯.起初我以为我应该这样,因为你明确表示你所引用的东西是当前类的成员,但有时你会用以下代码结束:

Document::Document(QWidget *parent) : QWidget(parent)
{
    this->file = 0;
    this->layout = new QGridLayout(this);
    this->layout->setSpacing(2);
    this->layout->setMargin(0);
    this->setLayout(this.layout);
    this->textArea = new QTextEdit(this);
    this->textArea->setLineWrapMode(QTextEdit::NoWrap);
    this->textArea->setAcceptDrops(true);
    this->textArea->setAcceptRichText(true);
    this->textArea->setUndoRedoEnabled(true);
    this->textArea->setFont(QFont("Mono" , 11));
    this->layout->addWidget(this->textArea);
    this->textArea->show();
    this->textArea->setFocus();
}
Run Code Online (Sandbox Code Playgroud)

我认为如果没有使用所有'this',这样会更好看this->layout->addWidget(this.textArea);.我认为代码在大多数情况下应该使用相同的样式,以便更容易阅读,所以我应该在必要时使用"this",或者使用它来表明你引用的是一个好的做法同一类的成员.

jal*_*alf 7

对此没有单一的答案.这取决于具体情况,这取决于你的要求.

有些人this一直都在使用.有些人从不使用它.有些人使用特殊前缀(mFile而不是file)重命名所有成员变量.

我宁愿只在this必要时使用前缀来避免歧义.

在编写良好的代码中,通常很明显您是指代本地变量还是成员变量,因此this实际上并没有做太多.但有时读者很难确定变量是否是类成员.然后this是一个澄清的好方法.

  • 我通常不使用"成员前缀",因为它似乎毫无意义.我们已经*以*this->`的形式拥有*标准前缀,并且我可以(并且可以)在必要时使用它.什么时候没必要.我不想用一些虚假的匈牙利符号来混淆我的代码 (4认同)

650*_*502 5

如果使用this更容易阅读(更容易理解,就是说),那么额外的输入是非常值得的。

在一个复杂的程序中,每一行代码都会写一次,但会读很多次(由不同的程序员),所以这是一项很好的投资。

我所知道的最易读的语言之一是 Python,它迫使您每次都编写self.x(相当于this->xC++),这根本不是问题。它的问题在于,在 Python 中,当您编写slef.x而不是self.x运行时捕获错误,但这是一个不同的无关问题......