【问题标题】:Naming Windows API constants in C#在 C# 中命名 Windows API 常量
【发布时间】:2012-04-12 15:51:52
【问题描述】:

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,即使这意味着对它们隐藏它。

【问题讨论】:

  • IMO,我认为在这种情况下不遵守指南是完全可以的。摘要评论及其明显的 WinAPI 风格足以让它保持原样——大多数人都会理解。如果您必须选择一种格式,我想我最喜欢ExtendedWindowStyles.Composited 作为类中的常量。
  • 怎么会匈牙利语?
  • @Cory 所以你说我应该装饰这样的东西,这样 FxCop 和 StyleCop 就不会抱怨?
  • @TLama 好的,所以我会编辑它并说我喜欢 FxCop 和 StyleCop 不抱怨。
  • 为什么WS_EX_COMPOSITED 错了?我真的不明白。就与 Windows API 的接口而言,它已尽善尽美。

标签: c# winapi naming-conventions pinvoke constants


【解决方案1】:

WS_EX_COMPOSITED 非常适合直接与 Win API(或任何其他记录在案的 API)接口的部分。您要公开的部分应遵循标准约定 - 具有单独的公共外观来调用具有良好方法名称的本机函数(您最终会忘记您对特定标志组合的研究,但好的包装方法名称至少会让你用它)。

使名称尽可能接近原生 API 的另一个好处是,您可以直接在 MSDN/其他文档中搜索常量并立即找到答案。如果你重命名它会更难。

【讨论】:

  • 这就是我觉得我不应该重命名它的确切原因。我相信你是对的。
【解决方案2】:

也许this 会帮助新访客解决这个问题。

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

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2023-03-23
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多