对于在命名空间或类型别名中定义C#是否有任何既定的命名或编码约定?
对于那些不知道的人,C#语言有一个特性,可以将别名定义在名称空间和类型文件的本地。这在与第三方库存在命名冲突以及缩短代码中的类型名称时非常有用。下面是它看起来的一个例子。
using Forms = System.Windows.Forms;我在网上看到的大多数示例都倾向于使用未缩写的大写名称作为别名,例如上面示例中的别名Forms。在一些地方,包括官方MSDN页面,它用名称空间System.Collections的别名colAlias解释了示例。为了使问题更加复杂,可能会有一些人倾向于选择不同的指导方针,这取决于名称空间别名还是类型别名的定义。
为了给出为什么我感兴趣的背景,任何有名字的指南,我会解释我在做什么。在最近的一个项目中,我开始简化一个模式,其中有几个类继承自一个泛型基类,它通过使用类型别名接受复杂类型参数。
因此,使用这种技术,一旦应用了类型别名,下面的复杂示例就变得更加可读性了。
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)
{
// ...
}
}虽然这看起来简单得多,但是很容易忘记,像Result这样的别名实际上只是List的别名,并且没有真正的类型称为Result。为了直观地分离概念,我正在考虑遵循一些前缀约定,类似于在私有成员之前使用下划线'_‘,以帮助区分类型别名和实际类型。然而,在我这么做之前,我想确保我不会重新发明轮子,因为也许已经有更多的既定约定了。
发布于 2011-12-09 19:15:06
命名空间别名并不是大多数代码库的一个常见特性--在我最后一次使用它时,高级开发人员对它并不熟悉,尽管已经使用C#多年了。
由于它是罕见的,没有为它制定的公约。
我想说的是,如果您要使用别名,请与您的团队讨论,以创建您自己的约定。
我看到了几种使用别名的不同方式:
发布于 2009-10-29 20:14:35
我只会在名称空间冲突的情况下使用别名(也就是说,只有在必要时才会使用别名)。
至少对我来说,任何其他用途都是令人困惑和分心的。
发布于 2009-10-29 20:14:32
就我个人而言,我只会用它来保持理智的清洁。
using StringBuilder = System.Text.StringBuilder;如果重命名类型,则为维护程序员打开Pandora的框。
https://stackoverflow.com/questions/1646236
复制相似问题