我倾向于回避扩展方法(在C#中),因为它违反了软件工程的“代码内聚”原则。
然后,为什么会这样?或者我的理解错了吗?
答案 0 :(得分:11)
相反,我认为明智地使用扩展方法可以提高代码的内聚力,因为您可以将方法和类放在一起执行相关任务。情况与C ++中的自由(静态)方法和Koenig查找没有什么不同,.
的扩展访问仅仅是语法糖。
答案 1 :(得分:8)
扩展方法就像你的武器库中的任何工具一样。明智地使用它们时,它们是一个强大的补充,使你能够写出笨拙的东西来表达。使用不好,他们是一个尴尬的拐杖,把东西拼凑在一起。
那就是说,我不同意你的说法,即它违反了代码凝聚力 - 我认为实际上恰恰相反。如果你没有扩展方法,你将被迫使用分散在整个代码中的实用程序类。
答案 2 :(得分:1)
我认为扩展方法不会违反代码内聚,而不是一组静态方法。因为在它们的核心扩展方法只是一组静态方法。 C#和VB.Net编译器只为它们提供了友好的语法。
人们一直在为他们在很长一段时间内无法控制的类创建静态实用程序方法,并且它们符合完善的工程实践。