Cam*_*tin 10 c# vb.net naming-conventions classname fully-qualified-naming
这种情况对于你们中的一些人来说可能并不完全不常见:你们有一些功能要放在一个类中,但是这个类的完美名称(*)是由System命名空间中的一个类或其他不属于你的命名空间/类所占用的.你在using/ import.
(*)完美我的意思是小巧,简洁和清晰的名字.
例如,我有一个Utils类Diagnostics(主要是debug utils)类和一个Drawing类.我可以:
DrawingUtils类和一个DiagnosticsUtils类,但这只是闻起来像坏结构.我认为选项1-3并不乐观:(
由于我选择的答案并没有明确地解决问题(我也不这样做),我建议那些面临同样情况的人要问自己:你会经常使用冲突的BCL类/命名空间吗?如果不是,那么让你的名字发生冲突(就像我在诊断中所做的那样).如果是,请添加一个限制类/命名空间可能性的单词.
在实践中,这意味着::
"Drawing"绘制的东西.
"MyCustomControlDrawing":东西借鉴只上MyCustomControl.例如:"WidgetDrawing".
I don't see any issue with keeping the names Drawing, Diagnostics etc. That's one of the purposes of namespaces, to resolve naming conflicts.
命名空间的优点在于它们允许您创建具有相同名称的类.使用using语句将别名导入到文件中时,可以为命名空间指定别名.
using MyAlias = My.Custom.Namespace;
Run Code Online (Sandbox Code Playgroud)
这将使您的课程与Microsoft分开.
然后你可以引用你的课程
MyAlias.Diagnostics
Run Code Online (Sandbox Code Playgroud)
或者您也可以为Microsoft的命名空间分配别名,但我不建议这样做,因为它会混淆其他开发人员.
对我来说,故意编写冲突的类名真的不值得.您会混淆其他不熟悉您的代码库的开发人员,因为他们期望使用BCL类,但最终会使用您的代码库(反之亦然).然后,你只需要浪费时间来编写特定的using别名.
老实说,提出有意义的标识符名称是一项有用的技能,但不值得推迟开发.如果你不能快速拿出好东西,那就选择一些平庸的事情并继续前进.辛苦工作的名字几乎没有价值.我敢说你可以做更有成效的事情.
编辑:我也不相信"小"是"完美"标识符的一个组成部分.当然,简洁明了,但如果需要更长的名称来传达特定结构的目的,那就这样吧.毕竟,我们有智能感知.
使用命名空间来消除您的类与其他命名空间中的类的歧义。使用完全限定名称或使用语句来告诉编译器您需要什么:
using Type = MyReallyCoolCustomReflector.Type;
Run Code Online (Sandbox Code Playgroud)
现在,如果您仍想使用 System 命名空间中的 Type 类:
System.Type sysType = anObject.GetType();
Run Code Online (Sandbox Code Playgroud)
一般来说,我会尽量避免名称重复,但情况并非总是如此。我也喜欢简单、可读和可维护的代码。因此,这通常是一个权衡决定。