c# - C# 中的类型/命名空间别名约定

标签 c# naming-conventions namespaces alias

关闭。这个问题是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/

相关文章:

namespaces - Enterprise Architect 代码生成模板 : import hierarchical package structure as a string

c# - 如何使用 C# 从 Windows 10 日历中检索 UWP 中的约会

c# - 如果它总是与同一事物进行比较,有没有办法缩短条件?

php - 我对类名的选择受到 Windows XP 最大路径长度问题和 SVN/域驱动设计的阻碍——任何解决方案

java - 分组测试的单元测试名称约定

ruby - 如何动态创建也在命名空间中的子类?

java - Play Framework 中子项目类中的包名称(命名空间)

c# - C# 字典是如何实现的? (C++)

c# - CompleteMultipartUploadResponse 中的 EntityTooSmall

javascript - AngularJS Controller 的命名问题