C# 使用指令在C中声明伪类型#

C# 使用指令在C中声明伪类型#,c#,.net,c#-4.0,using,using-directives,C#,.net,C# 4.0,Using,Using Directives,我继承了一些我刚刚开始挖掘的源代码,我发现以前的所有者使用了using指令作为列表的别名,但我以前从未见过这种特定的方法 namespace MyNamespace { using pType1 = List<type1>; using pType2 = List<List<type1>>; // classes here } 名称空间MyNamespace { 使用pType1=列表; 使用pType2=列表; //在这里上课

我继承了一些我刚刚开始挖掘的源代码,我发现以前的所有者使用了
using
指令作为
列表的别名,但我以前从未见过这种特定的方法

namespace MyNamespace
{
    using pType1 = List<type1>;
    using pType2 = List<List<type1>>;

     // classes here
}
名称空间MyNamespace
{
使用pType1=列表;
使用pType2=列表;
//在这里上课
}

这两个元素在代码中被大量使用,并且也是代码中几个关键方法的返回类型。我明白了他想用一个简单的名字,而不是一次又一次地重复
List
List
来达到的目的。我正在讨论是否要创建一个实类型来替换using语句,但在我花时间之前,我想知道保留当前实现是否有任何优点/缺点。

如果该构造像您所说的那样被大量使用,我肯定会用(实类型)替换它(显式地写出列表或创建一个新类型)。如果有人碰巧更改了其中一个类型声明,比如

using pType1 = List<type2WhichType1InheritsFrom>;
使用pType1=List;

因为他认为基本版本在不查看所有使用位置的情况下做得更好,所以可能会有一些不必要的副作用。

一般来说,如果数据结构代表应用程序域模型中的某个实体,它应该有自己的类型;它使代码更加清晰易懂。另一方面,如果您只需要一个
列表
来进行中间数据处理,那么为它创建一个合适的类型并没有什么真正的好处


在您的例子中,由于最初的开发人员遇到了为该类型创建别名的麻烦,因此在逻辑上它将被大量使用,这指向“表示实体”场景。如果是这样的话,一定要继续为结构创建一个新类型(可能是比裸列表更合适的类型,通常是根据接口而不是具体类定义的类型,但这取决于您在那里实际建模的内容)。

这些用法确实很少见。在代码库中,作者通常试图隐藏他们对泛型有用之处的理解不足。我见过类似于<代码>列表<代码>:-)的事情,即使你给这只野兽起了个名字,它仍然是一只野兽。在实践中同意你的观点,但在理论上,如果遵循Liskov的替换,它不应该导致一个问题,因为作者的变更会使关于具体实现细节的知识消失。说到这里,我总是尽可能地使我的代码易于维护。我们有一些项目,最初的作者离开了公司,给了我们一些非常有趣的代码构造,只是为了确保修改一行代码会破坏整个应用程序。。。我讨厌实践vs.理论:-)@DanielElliott这不正朝着另一个方向发展吗?如果我有一个列表,我只能在没有非字符串对象添加到列表的地方将其更改为列表。谢谢Jon。。。你的回答是我保持现有结构的“最佳”骗局。我将实现我自己的类型。多谢大家