【发布时间】:2014-10-07 12:24:46
【问题描述】:
最近我在这里发布了一段我的代码并得到了一条评论(与原始问题无关)使用this 处理类的所有成员函数和属性“不是只是个人编码风格的问题,这是不好的做法”。不幸的是,该人拒绝详细说明并告诉我自己查找。
我用过很多谷歌(但很难用“this”作为关键字查找任何东西),并在这里四处寻找,但我只发现someexamplesthis有被使用。
我知道在某些情况下使用this 是不可避免的(同名的参数/变量、模板继承等),但随着时间的推移我开始尽可能使用this,因为我可以找到解决方法我的代码更容易更快。我的理由包括:
- 快速检查函数
f是否应该是成员函数:如果代码中没有this,则可以将其从类中取出 - 快速检查
f是否可以是const函数:如果左侧没有this,很可能可以设为const(并非总是如此,但我发现它在略读时很有用) - 快速检查对象是否以
f中的“预定义”方式“更改”自身,或者它是否是复合成员函数(使用this调用的成员方法与在没有这个的对象) - 调试;即,如果成员属性在任何时候被分配了错误的值,我必须专注于包含
this的行来查找问题,因为其他行不会更改对象
坦率地说,关于这是“不良做法”的评论让我有些不安。但是,一条评论本身并没有多大意义,所以我想问一下对所有成员函数和属性始终使用this 有什么不好的地方吗?如果那么,是什么主要缺点使它超越了(可能是笨拙、不受欢迎或不普遍)的个人风格,并将其归入“不良做法”类别?
【问题讨论】:
-
这很可能是基于意见。我不认为有任何确凿的事实。就个人而言,我发现使用
this不需要分散注意力/烦人的噪音。 -
我想,已经解释过了stackoverflow.com/questions/2337540/…我错了吗?
-
@juanchopanza 嘿,我看到你链接的帖子是重复的(以及我在 Q 中链接的另外两个类似的帖子)。然而,我我实际上是在寻找确凿的事实:我得到的评论的措辞表明它显然对每个人都应该清楚的原因,并且我应该能够找到自己。因此,虽然我同意每个人都有自己的个人偏好,但我想知道是否有任何确凿的事实证明这是糟糕的编码实践而不是不受欢迎编码风格。如果我尝试为此重新提出我的问题会有所帮助吗?
-
没有确凿的事实。因此,答案将是主观的。但如果你愿意,我可以重新打开它。
-
投票重新开放。问题不是基于意见的。如果有任何技术理由不在任何地方使用
this,这个问题就很有效,而这个问题的答案是“不”。这个问题自然会导致一些基于意见的阐述,说明为什么它仍然是一个坏主意,但问题本身是基于事实的。如果基于意见的阐述的可能性是关闭标准,那么几乎可以将所有其他合法的问题作为基于意见的问题关闭。