Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有泛型和继承的编码风格_C#_Generics_Coding Style - Fatal编程技术网

C# 具有泛型和继承的编码风格

C# 具有泛型和继承的编码风格,c#,generics,coding-style,C#,Generics,Coding Style,可能重复: 当前,我们正在重新评估从通用类继承时如何执行泛型类。目前,我们将把以下两个类定义放在同一个文件中 class Foo { // code for class } class Foo<T> : foo { // code for class } class-Foo { //班级代码 } Foo类:Foo { //班级代码 } 我的问题很简单,我们应该将它们保存在同一个文件中,还是将它们拆分为单独的文件 到目前为止,将它们保存在同一个文件中的好处是,所有

可能重复:

当前,我们正在重新评估从通用类继承时如何执行泛型类。目前,我们将把以下两个类定义放在同一个文件中

class Foo
{
    // code for class
}

class Foo<T> : foo
{
   // code for class
}
class-Foo
{
//班级代码
}
Foo类:Foo
{
//班级代码
}
我的问题很简单,我们应该将它们保存在同一个文件中,还是将它们拆分为单独的文件

到目前为止,将它们保存在同一个文件中的好处是,所有代码都在您的面前。缺点是当两个类都足够大时,它可能变得不可读


我想要的是关于我们为什么要这样做或那样做的充分理由。如果您建议使用单独的文件,我还希望您包括可能的命名约定,或者一种策略,以避免我们只能有一个名为Foo的文件这是一个意见问题,但我会将它们保留在同一个文件中,而不是尝试为其中一个文件维护某种命名约定

虽然我订阅了一个类,一个文件,但我认为把它们放在一起是有价值的。我们真的把它们当作一个类,对吗?通常,
Foo
将是抽象的,只是使用泛型类型的一种方式……嗯,更一般地说——在类型参数无关紧要且在编译时无法知道的地方


如果类变得太大,那么不管怎么说,应该解除一些责任是一个危险信号。

将这些类保持在较小的范围内,您可以将它们保存在一个文件中。如果你不能把它们保持小,就把它们分开。如果你喜欢把它们分开存放,也没关系。但还是要保持小的尺寸。如果是单独的文件,我会使用FooGeneric名称,但这里有人建议使用Foo`1(对于1个参数)。

除非类非常简单,否则我不会在一个文件中放置多个类。在我看来,如果您有一个可预测的、唯一的文件名,并且名称空间通常基于文件夹,那么就更容易准确地找到您要查找的类

要命名文件,请执行以下操作:

foo.cs
foo_t.cs
foo_tuv.cs // for a foo class with three generics

我建议将这些类保存在同一个文件中。它使查找所有Foo类变得更容易。此外,通过代码折叠(区域),您可以通过折叠另一个类来轻松地仅查看一个类

也就是说,我不会说任何一种方式都是错误的。最后,这是需要一些经验才能得出你的个人偏好并找到适合你的特定项目的东西之一。你可能会发现对一个项目有效的东西并不一定对你的下一个项目有效。

回答:

我认为解决这个问题的常用方法是将文件命名为 这:

{ClassName}{NumberOfGenericParameters}

这将为您提供以下文件名:

Bag.cs和Bag`1.cs

这是Microsoft在Asp.net等框架中处理此问题的方式 Mvc


正如杰伊在他的回答中所指出的,这是一个风格观点的问题。事实上,这是一个观点的问题,这根本不是一个糟糕的答案,尽管它与我的相反+1这也是一个有效的观点,绝对需要考虑。这里有几个答案链接到,似乎在问同样的问题。