1

请看下面的代码:

public class Vehicle
  'Not very well designed.  Contains properties and functions/subs for cars, buses, tractors, planes, drivers etc.
end class

我想重构代码,以便有一个超类(车辆)和许多子类。在处理更高优先级的工作时,我想这样做。

如果我创建新类,那么将有两个车辆类,即重构车辆和旧车辆。我相信最好的方法是为重构代码创建一个新的命名空间,例如 company.app.businesslogiclayer.automobiles.refactoredcode、company.app.datalogiclayer.automobiles.refactoredcode。这是正确的方法吗?

4

2 回答 2

1

我认为您可以将现有的类视为子类,因为它已经具有一些特定于类的功能,然后查看Extract Superclass重构。在这里,您将创建新的超类,然后将公共特征从子类移动到超类。

在此处输入图像描述

Refactoring for Visual Basic有一个很好的关于提取超类的部分,您可能会觉得很有趣。

于 2013-01-16T19:23:07.067 回答
1

注意不要过度使用继承。“Driver”让我觉得你真的想用作曲来做。车辆有司机。类似地,使用组合可以更好地处理其他事情,例如 。例如,您可以拥有一辆时速为 200 公里的汽车,而一辆时速为 300 公里的汽车。真的不想为此开设不同的课程。如果你有更复杂的东西,你可以有一个简单的 int 值或一个 EngineBehaviour 类。(关键字:策略模式)也确保不要在你的对象中实例化这样的复合对象,而是注入它们(关键字:依赖注入)。

于 2013-01-17T10:26:31.923 回答