c#开发人员的c++命名约定

本文关键字:c++ 命名约定 开发 | 更新日期: 2023-09-27 18:15:29

c#有一个由微软编写的名为StyleCop的工具,它提供了一些默认规则,我发现这些规则对于结束团队之间关于代码风格的争吵非常有用。默认规则声明所有类变量必须使用以下语法来引用类变量:

this.classVariable  // C# Default StyleCop Naming Convention

c#中主要的替代方法是使用前导下划线来代替:

_classVariable      // C# Alternative StyleCop Naming Convention

c++似乎有大量的命名限制,排除了前导下划线,因为这是为库和操作系统保留的。像这样使用"this"关键字怎么样,这是一种常见的语法吗?

this->classVariable // C++

我不希望这篇文章沦落为一场关于风格的争论。我不是在问你对编码风格的意见。我只是想知道一个简短的列表,什么是最常见的风格,如果上面的例子是常用的,所以我可以选择一个,然后继续。

我不知道为什么这个问题被搁置了。他们问了一些具体的问题,我们得到了一个很好的答案。没有人发表意见。不可否认,这是一个敏感的话题,但我认为最后一切都很顺利。

c#开发人员的c++命名约定

据我所知有3种样式。

首先使用下划线:

class Person
{
private:
    int _age;
    ...

你担心命名限制,但不用担心-第一个下划线+ -大写在非全局名称上是不非法的。

(第一个下划线+ 大写是非法的;你不能使用这样的名字:_Age .)

第二,使用m_。(m表示成员)

class Person
{
private:
    int m_age;
    ...

这个风格在MFC中使用,我也更喜欢这个。

第三,在 name的最后部分使用下划线。
class Person
{
private:
    int age_;
    ...

没见过多少次,但我以前见过>o<</p>


那么,您也可以正常命名您的所有类变量,并使用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
    ...
}