在C#中命名Windows API常量

时间:2012-03-29 01:21:35

标签: c# winapi naming-conventions pinvoke constants

naming convention for constants in C#是Pascal套管:

private const int TheAnswer = 42;

但有时我们需要从Windows API中表示已存在的常量。

例如,我不知道如何命名:

/// <summary>
/// With this style turned on for your form, 
/// Windows double-buffers the form and all its child controls.
/// </summary>
public const int WS_EX_COMPOSITED = 0x02000000;

我该怎么命名?

将其保留为WS_EX_COMPOSITED可让我快速将其与the WinAPI相关联,但这是错误的。

一些选项:

  • WsExComposited - 太匈牙利
  • Composited - 太短
  • WsEx枚举Composited - 仍然是匈牙利人
  • ExtendedWindowsStyles.Composited - 班级中的常数?枚举?

应该注意的是,良好命名的目标是:

  • 必须是可读的。
  • 它不能触发FxCop和StyleCop,即使这意味着将它隐藏起来。

2 个答案:

答案 0 :(得分:15)

对于直接与Win API(或任何其他文档化API)进行交互的部分,WS_EX_COMPOSITED非常适用。您要公开的部分应该遵循标准约定 - 使用单独的公共Facade来调用具有良好方法名称的本机函数(您最终会忘记您对特定标志组合的研究,但是好的包装器方法名称至少会让你用它)。

保持名称尽可能接近本机API的一个好处是,您可以直接在MSDN /其他文档中搜索常量并立即找到答案。如果你重命名它将会困难得多。

答案 1 :(得分:0)

也许this可以帮助新访问者解决这个问题。

  

如果字段或变量名称旨在与与Win32或COM关联的项目的名称匹配,因此需要以下划线开头,请将字段或变量放在特殊的NativeMethods类中。 NativeMethods类是包含以NativeMethods结尾的名称的任何类,用作Win32或COM包装器的占位符。如果项目放在NativeMethods类中,StyleCop将忽略此违规。