dev*_*ium 8 .net c# vb.net generics overloading
我有个问题.在框架中,这主要是在泛型出现之前编写的,你经常会看到一个具有大量重载的函数来执行不同类型的操作.
一个)
Parse(int data)
Parse(long data)
Parse(string data)
..etc
Run Code Online (Sandbox Code Playgroud)
这似乎没问题,因为它有助于为每种方法保持较小的代码等等.另一方面,现在使用泛型,您可以执行以下操作:
b)
Parse<T>(T data)
Run Code Online (Sandbox Code Playgroud)
然后使用typeof()创建某种ifs/switch语句,以尝试推断出类型是什么以及如何处理它们.
什么是最佳做法?或者什么是帮助我在a)和b)之间做出选择的想法?
Ste*_*ger 22
恕我直言,如果你需要if/switch语句,你应该更好地重载.如果实现不依赖于具体类型仍然可以重用它,那么应该使用泛型.
所以作为一般规则:
代码嗅觉.
如果你有" 某种if/switch ",那就是一种只会尖叫多态的代码味道.它表明泛型不是解决这个问题的方法.当代码不依赖于您传递给它的具体类型时,应该使用泛型.
观看此Google Tech会谈视频:" 清洁代码会谈 - 继承,多态,和测试 ".它具体针对您所谈论的内容.