假设我有一个名为Building
的班级。这是在程序开始时创建的。我需要对Building类的变量进行数百次操作。现在我有两个选择。
1.使用方法定义各种类并将Building传递给它们
class StoryService
{
private readonly Building building;
public StoryService(Building building)
{
this.building = building;
}
public void AddStory() {}
}
2.定义Building
的扩展方法static class StoryExtensionMethods
{
public static void AddStory(this Building building) {}
}
现在在我的申请中:
var building = new Building();
// Method 1
var storyService = new StoryService(building);
storyService.AddStory();
// Method 2
building.AddStory();
现在我的问题是,在绩效和良好实践方面,这是哪一种方式。哪一个会减少类耦合?
答案 0 :(得分:3)
我从来没有发现使用静态扩展的特别好的理由,因为这样做(如果其他人在代码库上工作)对他们来说有点混乱,因为有几个地方需要寻找给定类的方法声明。
然而,对你不拥有的东西进行静态扩展(例如,为了使其成为标题大小写,将新方法添加到字符串中)非常有意义。
所以我要尽可能地避免它,但如果你觉得有必要或者没有能力编辑课程本身,那么创建扩展并确保其他人知道它。
表现效果可以忽略不计。