【问题标题】:C++: Struct Naming Standards [closed]C++:结构命名标准
【发布时间】:2010-12-15 00:55:02
【问题描述】:

我应该如何命名结构及其变量?这包括对象内部的结构...

谢谢。

【问题讨论】:

  • 我试图给出一个关于如何使用标识符的完整愿景,这只是目的......

标签: c++ struct naming-conventions standards


【解决方案1】:

找到你喜欢的风格并坚持下去。就这么简单。我是这样做的:

struct Foo
{
    int bar;
    char baz;

    Foo foo;
};

结构和类的第一个字符大写,内部的变量没有。

但同样,这是我的风格,找到适合你的风格并坚持下去。没什么好说的了。

【讨论】:

  • 我认为这不是有效的 C++ 代码。
  • 造型应该更加认真。习惯于任意的样式约定是一个严重的错误。最好遵循标准样式约定,例如。搜索 Google c++ 约定。
【解决方案2】:

与周围的人协调你的风格 - 在合理的范围内,你为结构和变量使用哪种命名方案并不重要,只要你团队中的每个人都在做一致的事情。

就我个人而言,我将结构命名为:

FunkyContainer

还有这样的变量:

ratherUsefulVariable

但你必须调整你所做的事情以适应房子的风格,否则你会破坏团队代码的一致性。

附带说明,您没有“对象内部的结构”——您可以有嵌套结构,即结构内部的结构,但这不是一回事。对象是结构的实例,而不是结构本身。 (显然,对象也可以是类的实例,但这与此处的区分目的无关。)

【讨论】:

  • 抱歉我没说清楚,“对象”是指类的实例。
  • @Jay:同样的评论适用于那里——objects 中没有嵌套结构,classes 中有嵌套结构。跨度>
【解决方案3】:

这是我认为非常完整的命名约定的完整列表:

  • 使用美国英语命名标识符。
  • 使用 Pascal 和 Camel 大小写来命名标识符。
  • 请勿使用匈牙利符号或在标识符中添加任何其他类型标识。
  • 不要为成员字段添加前缀。
  • 不要使用大小写来区分标识符。
  • 谨慎使用缩写。
  • 不要在标识符中使用下划线。
  • 根据含义而不是类型命名标识符。
  • 根据明确定义的模式命名命名空间。
  • 请勿在类或结构名称中添加后缀。
  • 使用名词或名词短语来命名类或结构。
  • 以字母 I 为前缀的接口。
  • 对接口的默认实现使用相似的名称。
  • 使用 Attribute 为属性名称添加后缀。
  • 不要将 Enum 后缀添加到枚举类型。
  • 对枚举类型使用单数名称。
  • 对表示位域的枚举使用复数名称。
  • 不要使用可能被误认为数字的字母,反之亦然。
  • 将 EventHandler 添加到与事件相关的委托中。
  • 为与回调方法相关的委托添加回调。
  • 不要在回调方法中添加回调或类似的后缀。
  • 使用动词(动名词)来命名事件。
  • 不要在事件名称中添加事件后缀(或任何其他与类型相关的后缀)。
  • 使用-ing 和-ed 形式来表示前置事件和后置事件。
  • 为事件处理程序加上 On 前缀。
  • 使用 Exception 为异常类添加后缀。
  • 不要在标识符中添加与代码归档相关的前缀。
  • 在它们包含的命名空间之后命名 DLL 程序集。
  • 不要将 MR 构建块前缀添加到源文件。
  • 使用 Pascal 大小写来命名源文件。
  • 将源文件命名为主类
  • 仅使用this。建设。

这适用于 C#,但也适用于 Java/C++。如果您想标准化您的代码,我建议您查看HIGH·INTEGRITY C++ CODING STANDARD MANUAL。

对于外壳标识符,您应该按以下方式进行:

  • 类、结构(Pascal,例如:AppDomain)
  • 枚举类型(Pascal,例如:ErrorLevel)
  • 枚举值(Pascal,例如:FatalError)
  • 事件(Pascal,例如:ValueChange)
  • 异常类Pascal,例如:WebException)
  • 字段(骆驼,例如:listItem)
  • Const Field Pascal,例如:MaximumItems)
  • 只读静态字段 Pascal,例如:RedValue)
  • 接口(Pascal,例如:IDisposable)
  • 方法(Pascal,例如:ToString)
  • 命名空间(Pascal,例如:System.Drawing)
  • 参数(骆驼,例如:typeName)
  • 属性(Pascal,例如:BackColor)

【讨论】:

  • 你应该添加 cmets 关于你投反对票的原因。所以我可以理解这有什么问题。
  • 来吧,这不是我要找的......
  • 骆驼案当然不是标准化的。
【解决方案4】:

我熟悉的任何命名标准都是针对平台、库等的。例如,Windows SDK 有一个标准,CRT 有一个标准,MFC 有一个标准。

我没有看到 C++ 的标准。或许您应该查看其他人在您的特定平台上使用的命名约定。

【讨论】:

  • 我大部分时间都遵循这个标准:possibility.com/Cpp/CppCodingStandard.html
  • 那么这就是你的答案。最后,重要的是您和与您一起工作的人对所使用的命名标准感到满意。
  • 那个标准没有谈论结构,所以这就是我问这个问题的原因。
猜你喜欢
  • 2014-05-18
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
  • 1970-01-01
  • 2010-12-21
相关资源
最近更新 更多