繁体   English   中英

C#开发人员的C ++命名约定[关闭]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM