C#有一个名为StyleCop的工具,由Microsoft编写,它为您提供了一些默认规则,我发现这些规则对于结束团队之间关于代码风格的任何争吵非常有用。默认规则声明所有类变量必须使用以下语法来引用类变量:
this.classVariable // C# Default StyleCop Naming Convention
C#中的主要替代方法是使用前导下划线:
_classVariable // C# Alternative StyleCop Naming Convention
C ++似乎有大量的naming restrictions排除了领先的下划线,因为这是为库和操作系统保留的。如何使用这样的'this'关键字,这是一种常见的语法吗?
this->classVariable // C++
我不希望这篇文章成为一场关于风格的斗争。 我不是在询问您对编码风格的看法。我只想知道一个简短的列表,列出最常见的样式,如果上面的例子是常用的,那么我可以选择一个并继续前进。
更新
我不确定为什么这个问题被搁置了。提出了具体问题,我们得到了一个非常好的答案。没有任何意见表达。不可否认,这是一个敏感的话题,但我认为最终一切顺利。
答案 0 :(得分:1)
据我所知,有3种风格。
首先,使用下划线:
class Person
{
private:
int _age;
...
您担心命名限制,但不要担心 - 首先在非全局名称上强调+ 非 -uppercase 并非违法。
(第一个下划线+ 大写 非法;您不能使用这样的名称:_Age
。)
其次,使用m_
。 (m
表示成员。)
class Person
{
private:
int m_age;
...
这种风格在MFC中使用,我也更喜欢这个。
第三,在名称的最后一部分上使用下划线。
class Person
{
private:
int age_;
...
它没有被多次看到,但我在> o<
之前看过它好吧,您也可以正常命名所有类变量并使用this->
。
class Person
{
private:
int age;
...
public:
void SetAge(int age) { this->age = age; }
...
然而,这并未被广泛使用;最重要的是,它太不方便了。 (另外我在C#中几乎没有看到this.var
样式,除了工具生成的源 - 它在C#中真的被广泛使用了吗?)
如您所见,this->
语法用于避免这种模糊的情况:
void Person::SetAge(int age)
{
age = age; // what does it mean?
}
(此外,在这种情况下,age
表示参数;因为它比Person::age
更本地化,因此本地age
隐藏{ {1}}。)
但正如我所说,它并没有被广泛使用。在这种情况下,编辑Person::age
之一的名称比使用age
要好得多。
this->
指针只是意味着自己;像任何其他语言this
,包括C#,它使用如下:
class