2013-05-07 584 views
5

我知道接口的命名规则类似于IName。但是如果我正在创建一个抽象类呢?抽象类的命名约定?

我还应该在班级名称前面写一个I吗?

+0

这听起来有点让我迷惑。抽象和界面是什么意思?在C++中,如果一个类至少有一个纯虚函数,则它是抽象的。一个接口类通常是这样 - 通常但不一定是抽象类,主要用于隐藏派生类中的实现细节并在公共接口上使用。 – jmihalicza 2013-05-07 23:11:34

+5

'I'前缀是Microsoft主义(用于COM和.NET),而不是C++命名约定本身。 – dan04 2013-05-07 23:13:18

+0

在java和c#中,如果类是抽象的或者它是一个接口,你可以直接看到。我已经看过几次我的前缀,所以我改编了它。我只想向其他开发人员说明这个类是抽象的还是和接口相关的。我可能也使用抽象类的I前缀。 – 2013-05-07 23:15:52

回答

9

与Oracles Java编码约定相反,C++没有“The”命名约定。

  • 如果您正在为某公司开发项目,则应遵循其命名约定。如果没有形成文件的约定 - 环顾代码库并尝试跟踪群体,一致性是关键。

  • 如果你是自己开始的事情,许多人发现google's c++ coding conventions是一个好的开始。

+11

嗯,我不知道任何* C++开发人员认为Google的惯例是很好的一般准则。他们对Google很好,但他们必须在不能普遍适用的限制条件下工作。 – 2013-05-07 23:47:45

+2

我写到这是一个好的开始,而不是圣杯。有什么好的惯例可以适用?随意链接到其他指南。 – Zelix 2013-05-07 23:56:23

+3

恰恰是这个观点:我和其他许多人认为它不是一个好的开始。它包含了很多不好的,不适用的和误导性的建议。 – 2013-05-07 23:57:16

3

有没有这样的事情作为一个全球性的命名约定。当你知道什么命名约定时,你可以在其中查找答案。

5

如果您尝试遵守特定的命名约定,请将其命名。正如其他答案所解释的那样,关于命名约定没有全局的“C++规则”。

如果您使用的是匈牙利符号,我相信该惯例的确将前缀'I'作为'IName'的前缀。

注意:尽管在C++中没有“接口”,但您可以使用纯虚方法定义类并且不使用成员变量。