c#开发人员的c++命名约定
C++ Naming Conventions for C# Developers
c#有一个由微软编写的名为StyleCop的工具,它提供了一些默认规则,我发现这些规则对于结束团队之间关于代码风格的争吵非常有用。默认规则声明所有类变量必须使用以下语法来引用类变量:
this.classVariable // C# Default StyleCop Naming Convention
c#中主要的替代方法是使用前导下划线来代替:
_classVariable // C# Alternative StyleCop Naming Convention
c++似乎有大量的命名限制,排除了前导下划线,因为这是为库和操作系统保留的。像这样使用"this"关键字怎么样,这是一种常见的语法吗?
this->classVariable // 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
...
}
相关文章:
- "std::unique_XXX"命名约定背后的基本原理是什么?
- 引发异常的方法的命名约定 (C++)?
- 标准宏命名约定
- C/C++ 与 C# 的互操作性命名约定
- 更多结构/类,以便更好地命名约定
- 合并函数参数的适当命名约定是什么?
- 返回布尔值的函数的命名约定是什么
- 重置"static"类的函数的命名约定
- 抽象数据类型命名约定:(动态)数组,向量,序列,列表,容器,缓冲区
- C++中私有成员函数的良好命名约定
- C++中私有虚拟函数是否有通用的命名约定
- 什么是 RAII 类的常见命名约定
- 如何在C++中使用第三方库时保持项目的命名约定
- ""中使用的命名约定<cstdint>
- 这个标题的命名约定指的是什么
- WinRT中字段的正确命名约定是什么
- 变量和 getter 的 Qt 命名约定,这样它们就不会发生冲突?
- 内联函数命名约定
- Win32/MFC与c++的命名约定
- 修改参数和/或返回新实例的方法/函数的命名约定