关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
5年前关闭。
Improve this question
是否有任何既定的命名或编码约定来定义 namespace or type aliases在 C# 中?
对于那些不知道的人,C# 语言有一个特性,可以在本地为命名空间和类型的文件定义别名。当与第三方库存在命名冲突以及缩短代码中的类型名称时,这会很有用。下面是它的外观示例。
using Forms = System.Windows.Forms;
我在网上看到的大多数示例都倾向于使用未缩写的大写名称作为别名,例如别名 表格 在上面的例子中。在一些地方包括official MSDN page它解释了别名为 的示例colAlias 对于命名空间 System.Collections。为了使它更复杂,一些人可能倾向于根据定义的是命名空间别名还是类型别名来选择不同的准则。
为了说明为什么我对任何带有别名的指南感兴趣,我将解释我在做什么。在最近的一个项目中,我开始简化一个模式,其中我有几个类从通用基类继承,该基类通过使用类型别名接受复杂类型参数。
因此,使用这种技术,一旦应用了类型别名,下面的复杂示例将变得更具可读性。
public class MyClass: MyGenericBaseClass<TripleLindyFancyAlgorithm<List<SomeValueType>>, List<SomeValueType>>
{
public override List<SomeValueType> DoSomething(TripleLindyFancyAlgorithm<List<SomeValueType>> operation)
{
// ...
}
}
在必须使用类型别名的更清洁版本之下。
using Result = List<SomeValueType>;
using Algorithm = TripleLindyFancyAlgorithm<List<SomeValueType>>; // Note: cannot reference an alias within an alias definition!
public class MyClass: MyGenericBaseClass<Algorithm, Result>
{
public override Result DoSomething(Algorithm operation)
{
// ...
}
}
尽管这看起来简单得多,但很容易忘记诸如 之类的别名。结果 实际上只是 List 的别名,并没有真正的类型叫做 结果 .为了在视觉上分离概念,我正在考虑遵循一些类似于在私有(private)成员之前使用下划线“_”的前缀约定,以帮助区分类型别名和实际类型。然而,在我这样做之前,我想确保我不会重新发明轮子,因为可能已经有更多既定的约定。
最佳答案
我只会在命名空间冲突的情况下使用别名(即只有在我必须的情况下)。
至少对我来说,任何其他用途都只是令人困惑和分心。
关于c# - C# 中的类型/命名空间别名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646236/