代码之家  ›  专栏  ›  技术社区  ›  Matt Brindley

当类名非常常见时,我应该怎么做?

  •  3
  • Matt Brindley  · 技术社区  · 16 年前

    我刚将另一个第三方组件添加到我的.NET项目中,该项目包含一个名为 Client 它让我想到了普通的类名。

    你把你的公共课命名为 顾客 或者你想让名字更具体些?

    过去我会说 顾客 很好,因为它总是可以通过其命名空间显式访问( Company.Product.Client )但MS似乎坚持使用.NET框架中更具描述性的类名,例如 WebClient , TcpClient SmtpClient .

    我觉得名字像 MessagePub.Client 看起来很整洁,而且 MessagePub.MessagePubClient 更不用说了,但是有很多 顾客 飘荡的S也感觉很乱。

    我使用的所有这些第三方组件实际上都是开放源码的,所以建议重构它们的类名并将其更改为更具描述性的,以使代码更具可读性,还是通过它们的名称空间访问更好?还是没关系?-)

    8 回复  |  直到 14 年前
        1
  •  5
  •   Peter Booster    16 年前

    我认为更具描述性的名字几乎总是更好的。这不仅仅是一个技术问题,更是一个语义问题:一方面,它迫使你思考你到底在处理什么样的类,并帮助你设定界限。

        2
  •  5
  •   Dirk Vollmar    16 年前

    别忘了 namespace alias quantifier 当您必须使用相似/相同的名称处理第三方库时:

    using Excel = Microsoft.Office.Interop.Excel;
    using Word = Microsoft.Office.Interop.Word;
    

    这样,您就可以很容易地区分不同的类别:

    Excel.Application excelApp = new Excel.Application();
    Word.Application wordApp = new Word.Application();
    
        3
  •  3
  •   SingleNegationElimination    16 年前

    如果您的标识符被名称空间消除了歧义,那么我无法想象您应该添加更多的噪声。就像你说的,感觉很乱。

    如果你有可能拥有不止一种,比如, MessagePub.Client ,就像一个只需要消息摘要的接口,或者另一个接口的消息适配器,那么当然您需要澄清这一点。也许 MessagePub.DefaultClient 对于一般情况, MessagePub.DigestClient 对于消化消费者,或 MessagePub.LogAdaptorClient 对于消息适配器

        4
  •  1
  •   Jeff Fritz    16 年前

    更具描述性的名字是个更好的主意…因为你要用如下陈述来资助某人:

    using Company.Product;
    using SomeOtherThing.Product;
    

    …如果 Client 出现在两个名称空间中,然后会有一些不可读的代码。

    常见的对象名如 顾客 , Product , User , Person , Message 等。我几乎总是用一些标识符作为前缀,以反映它们更大的用途。

        5
  •  0
  •   PepperBob    16 年前

    好吧,类越具体,它就应该有一个更具体的名称——考虑到它不需要长时间和长时间的运行。

    当然,名称空间是区分动态和为代码添加解释能力的一种很好的方法。不过,我不会为了有不同的命名而重构任何东西。

        6
  •  0
  •   ChrisW    16 年前

    您是将公共类命名为与客户机相同的公共类,还是尝试将其命名为更具体的类?

    我试着做两件事:

    1. 没有两个 我的 类具有相同的名称(但我不关心我的任何类名称是否与第三方的名称冲突:这就是名称空间的用途)。

    2. 我的类几乎从来没有与任何Microsoft系统类同名(我不会创建一个名为 Dictionary Form 例如)

        7
  •  0
  •   CW Holeman II    16 年前

    “谷歌是你的朋友”。如果你正在考虑使用的类名有3.61亿个点击率,你可以期待问题的出现。另外,您可能会发现您的类已经实现。

        8
  •  0
  •   mP.    14 年前

    客户是一个不好的名字,它到底是什么客户?我想说的是一种化合物,如mailclient、microwaveclient、telephone client等。

    推荐文章