[英]C++ Naming Conventions for C# Developers [closed]
C#有一个由Microsoft编写的名为StyleCop的工具,它为您提供一些默认规则,这些规则对于结束团队之间有关代码样式的争执非常有用。 默认规则规定,所有类变量必须使用以下语法来引用类变量:
this.classVariable // C# Default StyleCop Naming Convention
C#中的主要替代方法是改用前导下划线:
_classVariable // C# Alternative StyleCop Naming Convention
C ++似乎有大量的命名限制 ,排除了下划线,因为这是为库和操作系统保留的。 像这样使用'this'关键字怎么办?这是通用语法吗?
this->classVariable // C++
我不希望这篇文章陷入关于风格的争论。 我不是问您对编码风格的看法 。 我只是想简短地列出最常见的样式,以及上面的示例是否被普遍使用,因此我可以继续进行选择。
UPDATE
我不确定为什么这个问题被搁置。 提出了具体问题,我们得到了一个很好的答案。 没有任何地方表达意见。 诚然,这是一个棘手的话题,但我认为最终都进展顺利。
据我所知,共有3种样式。
首先,使用下划线:
class Person
{
private:
int _age;
...
您担心命名限制,但是不用担心- 非全局名称的首个下划线+ 非大写字母是非法的。
(第一个下划线+ 大写字母 是非法的;您不得使用这样的名称: _Age
。)
其次,使用m_
。 ( m
表示成员。)
class Person
{
private:
int m_age;
...
MFC中使用了这种样式,我也更喜欢这种样式。
第三,在name的最后部分使用下划线。
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
隐藏了Person::age
。)
但它没有像我所说的那样被广泛使用。 在这种情况下,编辑age
之一的名称要比使用this->
好得多。
this
指针仅表示我自己; 像其他任何具有class
语言一样,包括C#,它的用法如下:
void SomeUtilFunction(Person *pPerson);
void Person::Foo()
{
...
SomeUtilFunction(this); // refer to myself
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.