我应该用通用类定义命名我的文件?
我正在编写几个都有generics类型参数的类,但是我需要重载类,因为在不同的场景中我需要不同数量的参数。 基本上,我有
public class MyGenericClass { ... } public class MyGenericClass { ... } public class MyGenericClass { ... } // it could go on forever, but it won't...
我希望它们都在同一个命名空间中,但每个类在一个源文件中。 我该怎么命名文件? 有最好的做法吗?
我见过人们用
MyGenericClass`1, MyGenericClass`2 or MyGenericClass`3
(数字是通用参数的数量)。
我认为当你在类上调用.ToString时,你得到的是TypeName。
出现这种情况时,我采用与C#generics的XML文档注释中使用的相同约定,即使用{
和}
代替<
和>
因为尖括号在XML或文件名中不友好,但是curl的是。 所以类似于:
MyClass的横置的.cs
MyClass的{T,K}的.cs
如果你真的有很多参数,那么作为命名方案可能会有点笨拙,所以我倾向于采用反引号的CLR约定,后跟参数计数,例如
MyClass`1.cs
MyClass`2.cs
或者根据情况混合搭配两种方案。
我认为你不会在C#社区找到很多教条,他们偏爱具有相同名称的generics类的每个变体的单独文件; 我更喜欢在你描述的情况下使用一个,但是如果代码对于每个变体都必须复杂/冗长,我可以看到你提出的建议。 一般来说,我只是使用相关类的名称作为文件名。
如果我要将变体分成单独的文件,我可以看到使用Michael的解决方案,尽管对于我们这些在命令行中使用Unix风格工具的人来说会有点痛苦,例如,Cygwin或AndLinux。 我可能会使用下划线或没有标点符号。 或者像1P,2P,3P这样的后缀。
我将它们全部放在同一个文件中,除非它们很大(通常它们不会,除了Ts最多的那个)。
除了你在.NET框架指南中找到的内容之外,命名类并没有真正的最佳实践,因为它是编程创意方面的一部分,不幸的是SSCLI只回到2.0,所以你在那里找不到多少帮助。
我通常使用Classname.1.cs
, Classname.2.cs
等…其中number是generics参数的数量,类似于notation used in the framework documentation (and in XML documentation in your sourcecode). Sometimes you also have a class with no generic arguments (similar to
`1 notation used in the framework documentation (and in XML documentation in your sourcecode). Sometimes you also have a class with no generic arguments (similar to
notation used in the framework documentation (and in XML documentation in your sourcecode). Sometimes you also have a class with no generic arguments (similar to
框架中的ICollection and
ICollection`),文件名只是类名,正如预期的那样。 与使用反引号相比,这样做的好处是文件名中不会包含任何无效字符。 并非所有文件系统,版本控制系统,操作系统都允许在名称中使用反引号字符。