假设您要将lengthOfFirstLine方法添加到预定义的File类中。修改现有类是一种更好的做法,还是使用新方法创建一个扩展File类的新类?
编辑 - 具体来说,情况是一个类特别缺少一种方法。我不想彻底改变这个类,而是用这个方法来扩充它。
答案 0 :(得分:5)
这取决于该方法是否适用于类File的所有元素。例如,lengthOfFirstLine不适用于二进制文件,因此它可能不属于通用的File类,但如果您的类只表示文本文件,那么它应该去那里。
答案 1 :(得分:1)
对于.NET语言,还可以选择使用extension methods。这样你就不必去弄脏了#34;通过向其添加辅助/实用程序方法的类,也不需要继承 - 只需在代码中添加using
语句即可向类添加功能。
答案 2 :(得分:1)
同意路易斯和莱斯特。如果您使用的是.Net,则可以使用扩展方法来实现此类功能。但是,如果可以打开各种文件(如二进制文件),则应该尝试不将LengthOfFirstLine添加到基类。您可以将它子类化为FileClass并将方法添加到该文件中。
请记住.Net中的扩展方法无论如何都是语法糖。您可以使用静态类和方法以您自己的语言模拟它。无论如何,这就是.Net所做的事情。
例如,有一个静态FileHelpers类,并且有各种静态帮助器方法。每个静态方法的第一个参数是File类。所以你可以使用 FileHelpers.GetLengthOfFirstLine(myOpenedFile)