我刚刚在我的.net项目中添加了另一个第三方组件,其中包含一个名为Client
的类,它让我想到了常见的类名。
您是否将公共类命名为与Client
一样常见,或者您是否尝试使名称更具体?
过去我会说Client
很好,因为它总是可以通过其命名空间(Company.Product.Client
)显式访问,但MS似乎坚持.net框架中更具描述性的类名,例如WebClient
,TcpClient
和SmtpClient
。
我认为像MessagePub.Client
这样的名字看起来很整洁,而MessagePub.MessagePubClient
的名字却不那么简单,但是当时有很多Client
漂浮的东西也感觉很乱。
我使用的所有这些第三方组件实际上都是开源的,因此建议将其类名重构并更改为更具描述性的内容,以使我的代码更具可读性或通过其命名空间访问更好的主意?还是没关系? : - )
答案 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
出现在两个名称空间中,那么您就会有一些不可读的代码。
常见对象名称,例如Client
,Product
,User
,Person
,Message
等...我几乎总是以一些标识符为前缀反映了他们更大的目标。
答案 4 :(得分:0)
嗯,该类越具体,它就应该具有更具指定性的名称 - 考虑到它是DoesNotGetUnnecessaryLongAndUnhandy。
当然,命名空间是一种很好的方法来消除命名并为代码添加解释力。但是,我不会因为有不同的命名而重构任何内容。
答案 5 :(得分:0)
您是否将公共类命名为与客户一样常见,或者您是否尝试使名称更具体?
我尝试做两件事:
我的类中没有两个具有相同的名称(但我不关心我的任何类名是否与第三方发生冲突:这就是命名空间的用途)。
我的类几乎从未与任何Microsoft System类同名(我不会创建一个名为Dictionary
或Form
的类,例如)
答案 6 :(得分:0)
“Google是你的朋友”。如果您正在考虑使用的班级名称有3.61亿次点击,那么您可以期待遇到问题。此外,您可能会发现您的课程已经实施。
答案 7 :(得分:0)
客户是一个糟糕的名字,究竟是什么客户?我会说像MailClient,MicrowaveClient,TelephoneClient等化合物