首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中的类型/名称空间别名约定

C#中的类型/名称空间别名约定
EN

Stack Overflow用户
提问于 2009-10-29 20:10:12
回答 7查看 15.7K关注 0票数 15

对于在命名空间或类型别名中定义C#是否有任何既定的命名或编码约定?

对于那些不知道的人,C#语言有一个特性,可以将别名定义在名称空间和类型文件的本地。这在与第三方库存在命名冲突以及缩短代码中的类型名称时非常有用。下面是它看起来的一个例子。

代码语言:javascript
复制
using Forms = System.Windows.Forms;

我在网上看到的大多数示例都倾向于使用未缩写的大写名称作为别名,例如上面示例中的别名Forms。在一些地方,包括官方MSDN页面,它用名称空间System.Collections的别名colAlias解释了示例。为了使问题更加复杂,可能会有一些人倾向于选择不同的指导方针,这取决于名称空间别名还是类型别名的定义。

为了给出为什么我感兴趣的背景,任何有名字的指南,我会解释我在做什么。在最近的一个项目中,我开始简化一个模式,其中有几个类继承自一个泛型基类,它通过使用类型别名接受复杂类型参数。

因此,使用这种技术,一旦应用了类型别名,下面的复杂示例就变得更加可读性了。

代码语言:javascript
复制
public class MyClass: MyGenericBaseClass<TripleLindyFancyAlgorithm<List<SomeValueType>>, List<SomeValueType>>
{
    public override List<SomeValueType> DoSomething(TripleLindyFancyAlgorithm<List<SomeValueType>> operation)
    {
        // ...
    }
 }

在必须更干净的版本下面使用类型别名。

代码语言:javascript
复制
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。为了直观地分离概念,我正在考虑遵循一些前缀约定,类似于在私有成员之前使用下划线'_‘,以帮助区分类型别名和实际类型。然而,在我这么做之前,我想确保我不会重新发明轮子,因为也许已经有更多的既定约定了。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-12-09 19:15:06

命名空间别名并不是大多数代码库的一个常见特性--在我最后一次使用它时,高级开发人员对它并不熟悉,尽管已经使用C#多年了。

由于它是罕见的,没有为它制定的公约。

我想说的是,如果您要使用别名,请与您的团队讨论,以创建您自己的约定。

我看到了几种使用别名的不同方式:

  • 名称空间的缩写。通常名称空间中的大写字母。
  • 名称空间的最末端-如果复数去复数。
  • 一个描述性短的名字。
票数 9
EN

Stack Overflow用户

发布于 2009-10-29 20:14:35

我只会在名称空间冲突的情况下使用别名(也就是说,只有在必要时才会使用别名)。

至少对我来说,任何其他用途都是令人困惑和分心的。

票数 15
EN

Stack Overflow用户

发布于 2009-10-29 20:14:32

就我个人而言,我只会用它来保持理智的清洁。

代码语言:javascript
复制
using StringBuilder = System.Text.StringBuilder;

如果重命名类型,则为维护程序员打开Pandora的框。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1646236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档