当班级名称很常见时,我该怎么办?

时间:2009-05-24 17:21:50

标签: c# .net naming-conventions class-design

我刚刚在我的.net项目中添加了另一个第三方组件,其中包含一个名为Client的类,它让我想到了常见的类名。

您是否将公共类命名为与Client一样常见,或者您是否尝试使名称更具体?

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

我认为像MessagePub.Client这样的名字看起来很整洁,而MessagePub.MessagePubClient的名字却不那么简单,但是当时有很多Client漂浮的东西也感觉很乱。

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

8 个答案:

答案 0 :(得分:5)

我认为更具描述性的名称几乎总是更好。它不仅仅是一个技术问题,当然也是一个语义问题:一方面,它要求你思考你正在处理什么类的课程,并帮助你设定界限。

答案 1 :(得分:5)

当您必须使用相似/相同的名称处理第三方库时,请不要忘记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();

答案 2 :(得分:3)

如果您的标识符被命名空间消除歧义,那么我无法想象您应该添加更多噪音。正如你所说,它感觉很乱。

如果你有可能有多种,比如MessagePub.Client,就像一个只想要消息摘要的那个,或者一个是其他界面的消息适配器,那么你当然需要澄清一下。对于常见情况,可能MessagePub.DefaultClient,摘要消费者可能是MessagePub.DigestClient,消息适配器可能是MessagePub.LogAdaptorClient

答案 3 :(得分:1)

更具描述性的名称是一个更好的主意......因为你打算用以下语句资助某人:

using Company.Product;
using SomeOtherThing.Product;

...如果Client出现在两个名称空间中,那么您就会有一些不可读的代码。

常见对象名称,例如ClientProductUserPersonMessage等...我几乎总是以一些标识符为前缀反映了他们更大的目标。

答案 4 :(得分:0)

嗯,该类越具体,它就应该具有更具指定性的名称 - 考虑到它是DoesNotGetUnnecessaryLongAndUnhandy。

当然,命名空间是一种很好的方法来消除命名并为代码添加解释力。但是,我不会因为有不同的命名而重构任何内容。

答案 5 :(得分:0)

  

您是否将公共类命名为与客户一样常见,或者您是否尝试使名称更具体?

我尝试做两件事:

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

  2. 我的类几乎从未与任何Microsoft System类同名(我不会创建一个名为DictionaryForm的类,例如)

    < / LI>

答案 6 :(得分:0)

“Google是你的朋友”。如果您正在考虑使用的班级名称有3.61亿次点击,那么您可以期待遇到问题。此外,您可能会发现您的课程已经实施。

答案 7 :(得分:0)

客户是一个糟糕的名字,究竟是什么客户?我会说像MailClient,MicrowaveClient,TelephoneClient等化合物