CSharp - C# 应使用与. NET的名称冲突的( 最佳优化) 类名称?

  显示原文与译文双语对照的内容
70 2

这种情况对你们有些人来说可能不是完全不常见的:在类中放置一些功能,但是perfect名称( * ) perfect perfect namespace类或者其他命名空间/类中的某个类,而不是你的/import

( * ) 以完美的形式,简洁,简洁,清晰的名字。

例如我有一个 Utils 类,它有一个 Diagnostics ( 大多数调试工具) 类和一个 Drawing 类。我可以:

  • DrawingUtils 类和 DiagnosticsUtils 类,但是它们的味道不一样。
  • 选择一个词典,并且完成一个更糟。更长或者难以置信的名称。
  • 用我的母语而不是英语写类名。
  • 问StackOverflow的聪明人。

我认为选项 1 -3不具有前景:(

编辑:

我选择的答案并没有完全解决问题,所以我推荐面对同样情形的人是问你们:你经常使用冲突的BCL类/命名空间?如果没有,那么让你的名称冲突( 就像我在诊断中所做的) 。如果是,添加一个限制的单词你的类/命名空间的可能性。

在实际中,这意味着:
"Drawing": 绘制的内容。
"MyCustomControlDrawing": 在 MyCustomControl 上只绘制 比如: "WidgetDrawing"

编辑2

下次查看的另一个解决方案:扩展方法 ( 承蒙割草机 。) 。

时间:原作者:0个回答

110 2

使用命名空间从其他命名空间中的类消除类歧义。使用完全限定名或者使用告诉编译所需的语句的语句:

using Type = MyReallyCoolCustomReflector.Type;

现在如果要仍然使用System命名空间中的类型类,请执行以下操作:

System.Type sysType = anObject.GetType();

通常我试图避免名称重复,但这并不是总是这样。我也喜欢简单易读且可以维护的代码。所以通常是 off 。

原作者:
69 5

我没有看到保留名称 DrawingDiagnostics 等等 作为命名空间的目的之一,以解决命名冲突的任何问题。

原作者:
114 5

命名空间的妙处在于,它们允许创建具有相同名称的类。你可以在使用 using 语句将别名导入到文件中时给名称空间分配别名。

using MyAlias = My.Custom.Namespace;

这将使你的类与microsoft保持独立

然后,你可以将类引用为

MyAlias.Diagnostics

或者也可以为,命名空间指定别名,但是我不推荐这样做,因为它将混淆它的他开发人员。

原作者:
138 3

对于我来说,有必要有目的地编写冲突的类名。你将会混淆不熟悉代码库的它的他开发人员,因为他们会希望使用,但结束( 反之亦然) 。然后,当他们不得不写特定的using 别名时,你就浪费了他们的时间。

实际上,出现有意义的标识符名是一个有用的技巧,但是不值得延迟开发。如果你不能快速地找到一些好的东西,那么你就可以找到一些普通的东西。在toiling上的名字是很少的。我敢说你可以做更多的工作。

:我也不认为是"完美"标识符的组件。简洁明了,但是如果需要更长的名称来传递特定构造的目的,那么它就可以了。我们有智能感知,毕竟。

原作者:
121 1

如果你想避免命名空间冲突,你可以执行以下操作:

  • 不要碰撞,而是选择唯一的名称。

示例:

如果你正在创建数学类,你可以命名你的CamiloMartin.MathHelper

  • 使用长名称空间区分 collissions 。

示例:

public class MyClass
{
 public int SomeCalculation(int a, int b)
 {
 return MyNamespace.Math.SomeFunc(a, b);
 }
}
  • 使用别名区分。

示例:

using System.Math;
using SuperMath = MyNamespace.Math;
namespace MyNamespace
{
 public class MyClass
 {
 public int SomeCalc(int a, int b)
 {
 int result = Math.abs(a);
 result = SuperMath::SomeFunc(a, b);
 return result;
 }
 }
}
原作者:
...