我正在开发一个使用Win32 / MFC框架和使用Visual Studio 2010的C ++编程语言的应用程序。
我的问题是哪个命名约定需要用于变量,函数名,类名等。我听说Microsoft建议使用“匈牙利表示法”命名约定。
您能否告诉我使用哪种标准?
答案 0 :(得分:8)
你可能有一个很好的理由希望你的代码看起来熟悉已经学过MFC的其他程序员。如果是这样,那么你可以模仿MFC Samples and Tutorials的约定,并做他们做的事情......
但是MFC是一个很早就起源的遗留图书馆,时代已经发生了变化。微软的风格指南现在特别指出 NOT 使用匈牙利符号:
http://msdn.microsoft.com/en-us/library/ms229042.aspx
除此之外,不是盲目地遵循任何特定文件,而是评估每个单独的惯例可能更好。例如,当MFC示例生成类并具有成员变量时,它们将使用m_
开始名称。 StackOverflow对此特定想法有疑问,您可以阅读有关替代方案的内容:
Why use prefixes on member variables in C++ classes
我更接近Qt的API样式指南,他们的大部分惯例都适用于我:
http://doc.qt.nokia.com/qq/qq13-apis.html
说到这,Qt是一个不错的C ++产品,不断发展和成熟。将MFC从水中吹出(完全)并且是跨平台的......
http://qt.nokia.com/products/developer-tools/
如果您想要锁定在Microsoft Universe中,请转到.NET和C#。这将是一个进步,你不会被MFC放弃软件困住。
答案 1 :(得分:2)
哦,小伙子。这几乎就像在问人们应该遵循什么样的宗教信仰。至少你没有问你应该使用什么文本编辑器......
我的2c:做对你有用的事情。还要考虑您是自己编写代码,还是希望其他人阅读或处理您编写的代码,以及是从头开始创建项目,还是构建现有代码。
命名约定确实无关紧要,只要:
您选择有意义的名称并描述变量/ function / other的用途。 (这里的关键问题是目的;让编译器处理类型。)
如何应用约定的任何其他方面(缩进,大小写,前缀,下划线的使用等)。
一般来说,如果代码编写得很好,那么约定的细节并不重要。
至于匈牙利语和前缀:Win32和C ++仍然使用它们,而.Net和C#则没有。
我强烈建议阅读这篇long but very insightful article by Joel Spolsky,这篇文章非常详细,概述了前缀约定如何以及为什么实际上非常有用,如果正确完成,以及它只是一个毫无意义的苦差事。
这些天,我不打扰大多数匈牙利语前缀,除了少数(注意这些只是我个人的偏好,它们是我发现多年来有用的):
对我来说,前两个有助于使代码更具可读性;这里的第三个例子有助于提高可读性,但也可以成为确保正确性的有用技术 - 如果你愿意的话,有点像助记符。