最近我在这里发布了一段代码并得到了一条评论(与原始问题无关)使用this
所有成员函数和类的属性是“不仅仅是个人编码风格的问题,这是不好的做法”。不幸的是,这个人拒绝详细说明并告诉我自己查阅。
我已经使用了Google一堆(但是很难用“this”作为关键字查找任何内容),并在这里查看,但我只找到some examples时的{{1 必须使用。
我知道使用this
是不可避免的情况(参数/变量具有相同的名称,模板继承等),但在时间我尽可能开始使用this
,因为我可以找到我的方法更容易,更快。我的理由包括:
this
是否应该是成员函数:如果代码中没有f
,则可以将其从类中取出this
是否可以是f
函数:如果左侧没有const
,则最有可能this
(并非总是如此,但我发现它在略读时很有用)const
中以“预定义”方式“更改”自身,或者它是否为复合成员函数(使用f
调用的成员方法与“外部”没有这个操作对象的算法)this
的行来找到问题,因为其他行不会更改对象this
是否有任何不妥之处?如果是这样,主要缺点是什么让它超越(可能是笨拙的,不受欢迎的或不普遍的)个人风格,并将其置于“不良实践”类别中?
答案 0 :(得分:24)
这个答案是基于意见的(正如其他人所指出的那样)。
我认为这是一种不好的做法,因为:
class <class-name> var;
声明所有对象实例,而不是<class-name> var;
并且忽略零&#34;的&#34;规则。 this->
(因为用于类,函数和变量的名称构成了用于理解结构的心理模型代码)。答案 1 :(得分:7)
没有任何技术原因导致无法在任何地方使用它。
如果您只对技术原因感兴趣,那就是您的答案。但是,我会恳请你考虑非技术原因。出于某种原因形成意见,其中一些原因可能是好的。例如,我建议在任何地方使用它会降低代码的可维护性,并且通过重新考虑命名方案可以更好地服务。
考虑通常this
用于需要的地方,而不是其他地方。正如你所说,有可能需要this
的原因,并且当大多数程序员遇到this
时,他们会对自己感到疑惑,“这里必须有一个非显而易见的原因。我想知道是什么原因是。“
一致性是可维护代码的重要属性。使用this
无处不在的一个主要问题是它与大多数其他程序员的做法不一致。由于大多数其他程序员不会在任何地方使用this
,当你做在任何地方使用它时,它会使他们更难以维护你的< / em>代码。