如何命名作为结构的变量

时间:2010-04-25 11:49:23

标签: c winapi coding-style

我经常使用WinApi处理私有项目,正如您所知,它有数千个命名和类型定义的结构,如MEMORY_BASIC_INFORMATION。

我会在我的问题中坚持这个,当你想要命名这种类型的变量时,仍然是首选的,或者更好。这种情况是否有某种风格指南?

例如,如果我需要VirtualQueryEx函数的变量。

一些想法:

 MEMORY_BASIC_INFORMATION memoryBasicInformation;   
 MEMORY_BASIC_INFORMATION memory_basic_information;

只需使用非大写的结构名称,有或没有下划线。

MEMORY_BASIC_INFORMATION basicInformation;
MEMORY_BASIC_INFORMATION information;

简短形式?

 MEMORY_BASIC_INFORMATION mbi;

我经常看到这种风格,使用结构名称的缩写。

 MEMORY_BASIC_INFORMATION buffer;

VirtualQueryEx定义了第三个参数lpBuffer(你将指针传递给结构体),所以使用这个名字也可能是一个想法。

干杯

3 个答案:

答案 0 :(得分:2)

通常,不鼓励根据类型命名变量。相反,请尝试提供有关特定上下文和使用目的的其他信息。

使用MEMORY_BASIC_INFORMATION示例,考虑结构的上下文。您是否使用这些信息迭代了许多此类信息结构?那么也许

MEMORY_BASIC_INFORMATION currentFrame;

或者,如果您正在对某些状态的内存信息进行测试,那么它可能是候选人。

MEMORY_BASIC_INFORMATION candidate;

现在您可以编写类似“测试候选人结构......”的文档。

您可能会发现仍希望使用类型前缀位置包含类型信息。如果是这种情况,您可以将其称为mbiCurrentFramembiCandidate

如果目的或上下文是真正抽象的,例如API函数本身的情况,我会选择简单直接的东西,例如infobuffer,除非在这种情况下这些名字可能会在某种程度上被错误解释。

答案 1 :(得分:0)

我认为这取决于许多问题,你只需要在争取可读性时找到最佳平衡。

  1. 窗口宽度
  2. 例程中使用的变量/类似名称。
  3. 话虽如此,如果我能逃脱它,我可能会使用......

    MEMORY_BASIC_INFORMATION  info;
    

    如果有其他类似的类型或变量名称,那么我会添加某种描述性修饰符,例如......

    MEMORY_BASIC_INFORMATION  memBasicInfo;
    

    或者,如果窗户房地产有限(我工作的一些项目坚持最多80个字符行),我可以去...

    MEMORY_BASIC_INFORMATION  mbi;
    

    但为了使其尽可能可读,我尝试保持一致 - 我认为这是最重要的事情之一。

    到处都是,但我希望它有所帮助。

答案 2 :(得分:0)

尝试并保留typedef的大小写和首字母缩写词,例如

MEMORY_BASIC_INFORMATION MBI_temp

我处理了许多代码,并且必须在Linux和Windows上保持可移植性,这对我们来说也是一个问题。

你也可以在驼峰的情况下做到这一点:

MEMORY_BASIC_INFORMATION MBITemp

..但这似乎不是自我解释。

关键是,任何熟悉这些结构的人都应该将它们识别为相当快的东西。请确保不要在另一个命名空间上进行操作。

关键是,在您工作的每棵树中保持一致。在两种情况下,它实际上只是一个值得注意的问题:

  1. 全局
  2. Mile long functions
  3. 如果你有很长的功能,你必须向上滚动五个页面才能看到变量是什么,处理的问题比变量命名要大:)

    令人讨厌的是,这可能会引入一些奇怪的现象,因为语法高亮将其选为常量,但对于底层的typedef也是如此。