当前位置:  开发笔记 > 编程语言 > 正文

C++中的变量命名约定

如何解决《C++中的变量命名约定》经验,为你挑选了4个好方法。

我来自.NET世界,我是编写C++的新手.我只是想知道在命名局部变量和struct成员时,首选的命名约定是什么.

例如,我继承的遗留代码有很多这样的代码:

struct MyStruct
{
   TCHAR           szMyChar[STRING_SIZE];
   bool            bMyBool;
   unsigned long   ulMyLong;
   void*           pMyPointer;
   MyObject**      ppMyObjects;
}

来自C#背景我很震惊地看到带有匈牙利符号的变量(我第一次看到它时不能停止对pp前缀嘲笑).

我宁愿用这种方式命名我的变量(虽然我不确定是否将首字母大写是一个很好的约定.我已经看到了其他方法(见下面的链接)):

struct MyStruct
{
   TCHAR           MyChar[STRING_SIZE];
   bool            MyBool;
   unsigned long   MyLong;
   void*           MyPointer;
   MyObject**      MyObjects;
}

我的问题:这(前一种方式)仍然是在C++中命名变量的首选方法吗?

参考文献:

http://geosoft.no/development/cppstyle.html

http://www.syntext.com/books/syntext-cpp-conventions.htm

http://ootips.org/hungarian-notation.html

谢谢!



1> Head Geek..:

那种匈牙利符号是相当无用的,如果你必须改变某种类型,可能比无用更糟糕.(在适当的那种匈牙利命名法的是一个不同的故事.)

我建议你使用你的小组做的任何事情.如果您是唯一参与该计划的人,请以最适合您的方式命名.


你的第二个陈述是完全错误的,你永远不应该发展这种座右铭.你永远不知道谁会在你的项目上工作.你的命名应该**让你的代码明确**,你的未来 - 你和其他人.变量/函数名称应该有助于理解发生了什么.
这是怎么回事?如果您有任何编码经验,以对您有意义的方式命名变量*是*使您的代码对您未来的自己明确.

2> Adam Rosenfi..:

最重要的是保持一致.如果你有一个旧的代码基础工作,命名变量和函数始终与遗留代码的命名约定.如果您正在编写仅与旧代码接口的新代码,请在新代码中使用您的命名约定,但也要与您自己保持一致.



3> peterchen..:

不."错误的匈牙利符号" - 特别是双重间接的pp - 对于你可以编写的早期C编译器有一定的意义

int * i = 17;
int j = ***i;

甚至没有来自编译器的警告(甚至可能是正确硬件上的有效代码......).

"真正的匈牙利符号"(由Geek主持)是IMO仍然是一个有效的选择,但不一定是首选.现代C++应用程序通常有几十种或几百种类型,您将找不到合适的前缀.

我仍然在本地使用它,在一些情况下,我必须混合例如在问题域中具有非常相似甚至相同名称的整数和浮点变量,例如

float fXmin, fXmax, fXpeak; // x values of range and where y=max
int   iXmin, iXMax, iXpeak; // respective indices in x axis vector

但是,在维护一致遵循某些约定的遗留代码时(即使松散),您应该坚持使用那里使用的约定 - 至少在现有的模块/编译单元中要维护.

我的理由:编码标准的目的是遵循最少惊喜的原则.始终如一地使用一种风格比使用哪种风格更重要.



4> xyz..:

除了它有点难看之外,在这个例子中有什么不喜欢或嘲笑"ppMyObjects"?我没有强烈的意见,但它确实传达了有用的信息,"MyObjects"没有.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有