【问题标题】:Representing abbreviations in camel-cased class names以驼峰命名的类名表示缩写
【发布时间】:2009-04-16 01:17:48
【问题描述】:

我正在创建一个 C# 库,并将使用它们使用的协议(TCP、UDP 等)作为大多数公共类的前缀,我遇到了一个难题:应该是 TCPXxxx 还是 @987654322 @?

.NET 框架中似乎没有标准(IPAddressTcpClient)。

在使用库时您更喜欢哪个:TCPXxxxTcpXxxx

【问题讨论】:

    标签: c# .net naming-conventions


    【解决方案1】:

    根据设计指南,它应该是 TcpXxxx。

    在设计指南中,2 个字母的首字母缩写词大写,所有其他字母的首字母大写。

    来自 Cwalina 和 Abrams 的框架设计指南

    • 双字符首字母缩写词的两个字符都大写,驼峰式标识符的第一个单词除外。
        System.IO
        public void StartIO(Stream ioStream)
    
    • 除了驼峰式标识符的第一个单词之外,只有三个或更多字符的首字母缩写词的第一个字符大写。

    MSDN 有一个简短的版本。

    【讨论】:

    • 我认为您的意思是 PascalCased,而不是 camelCased。
    • @Reed:你有链接吗?不是我不相信你,而是我想读一读。
    • @Samuel:我是从书中添加的...添加到 msdn 的链接。
    • @Joel:感谢您的注意 - 只是输入错误。现已修复。
    【解决方案2】:

    我总是喜欢想象一个将 WordsLikeThis 转换为 words-like-this 的理论过程,并想象相关名称将如何转换。一些例子:

    TCPSocket -> t-c-p-socket
    TcpSocket -> tcp-socket

    显然后者更有意义。

    【讨论】:

      【解决方案3】:

      一般情况下,如果是 2 个字符的前缀,则保留大写 (IPAddress),如果是 3 个或更多字符,则将前缀 (TcpXxxx) 大写。

      此规则有一些例外情况(例如,如果前缀是大写的专有名称)。

      【讨论】:

        【解决方案4】:

        您可以考虑将这些类放在名为“TCP”的命名空间中。如果您这样做,那么您在该命名空间中的函数/类名称将变得更短更清晰,您根本不必担心这个问题。

        【讨论】:

        • 这仍然存在 TCP 与 Tcp 的问题。我希望它们作为前缀,因为我将使用客户端、服务器、用户等术语。我不希望有人必须使用别名来避免冲突。
        【解决方案5】:

        我知道这是 C# 编码风格,但我更喜欢 Python PEP 8 Style

        注意:在 CapWords 中使用缩写词时,所有字母大写 的缩写。因此 HTTPServerError 比 HttpServer 错误。

        但是在罗马...一致的代码更好,这就是语言风格指南是个好主意的原因。

        【讨论】:

        • @Daren 完全同意,但我更喜欢将其表达为“一致性优于完美主义”,以避免反对者暗示错误是唯一的选择。
        【解决方案6】:

        我知道在 Eclipse 中我可以通过只使用类型名称的大写字母来快速指定一个类型,所以我更喜欢大写而不是大写...我不知道 VS 是否可以这样做但是这是狂热的

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-18
          • 1970-01-01
          • 2011-05-20
          • 1970-01-01
          • 2010-12-09
          相关资源
          最近更新 更多