我看到这些被用在各种场合,并被指责使用它们的方式不正确(尽管在那种情况下,我是以演示一个 观点 的方式使用它们的)。
那么,你认为使用扩展方法的最佳实践是什么?
开发团队应该创建一个扩展方法库并在各个项目中部署它们吗?
是否应该有一组通用的扩展方法,以开源项目的形式存在?
更新:已经决定创建一个全局的扩展方法库。
我一直把我的扩展方法包含在 Utils 类中,与我的核心库一起使用,因为使用我的框架的人可能会发现这些方法很有用,但是对于大规模部署,最终开发人员可能会有多个扩展方法库可供选择,我建议将所有扩展方法放到它们自己的命名空间中,甚至它们自己的项目文件中,这样人们就可以选择添加引用或 using 语句或者只是在必要时使用,如下所示:
Core.Extensions.Base64Encode(str);
我的Utils类是我最好的朋友,在扩展方法出现之前,它就已经存在了,而且扩展方法只是加强了我们的关系。我遵循的最重要的规则是尽可能让人们选择他们正在使用的扩展框架。
自20世纪90年代初以来,Objective-C语言就拥有“类别(Categories)”;这本质上与.NET扩展方法相同。在寻找最佳实践时,您可能希望查看Objective-C(Cocoa和NeXT)开发人员在此方面制定的经验法则。
Brent Simmons(Mac OS X和iPhone的NetNewsWire RSS阅读器的作者)今天刚刚发布了他的新样式规则,用于使用类别,在Cocoa社区中已经出现了一些讨论。
我认为这取决于Extension方法的目的。
注意不要全局包含几乎没有应用的Extension方法,因为它们只会堵塞智能提示,可能会导致混淆和/或误用。