Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 组织重构代码_Vb.net_Design Patterns - Fatal编程技术网

Vb.net 组织重构代码

Vb.net 组织重构代码,vb.net,design-patterns,Vb.net,Design Patterns,请查看以下代码: public class Vehicle 'Not very well designed. Contains properties and functions/subs for cars, buses, tractors, planes, drivers etc. end class 我想重构代码,以便有一个超类(vehicle)和许多子类。我想在处理更高优先级的工作时做到这一点 如果我创建新类,那么将有两个车辆类,即重构车辆和旧车辆。我认为最好的方法是为重构代码创建一

请查看以下代码:

public class Vehicle
  'Not very well designed.  Contains properties and functions/subs for cars, buses, tractors, planes, drivers etc.
end class
我想重构代码,以便有一个超类(vehicle)和许多子类。我想在处理更高优先级的工作时做到这一点


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

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


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

小心不要过度使用继承。在我看来,“驱动者”是你们真正想用构图来表达的东西。车辆有司机。类似地,使用组合可以更好地处理其他事情,例如。例如,你可以有一辆时速200公里的车,也可以有一辆时速300公里的车。真的不想有不同的课程。如果有更复杂的内容,可以使用简单的int值或EngineBhaviour类。(关键字:策略模式)也要确保不要在对象中实例化这样的复合对象,而是注入它们(关键字:依赖项注入)。

在我的情况下,Employee更像是超类,因为它包含所有内容。你认为把一个设计糟糕的类作为超类可以吗?是的,我完全明白你的意思。与所有重构一样,根据您的单个代码库定制步骤是很重要的。我认为这两种方法都可行。就我个人而言,我会尝试将我现有的类视为一个子类,这样您就不得不将公共元素重构为一个干净的超类。然而,我相信另一种方法也会奏效,只是要确保在某个时候清理一下您的Employee类。当然,我说的所有这些,都没有深入了解您的代码库,所以您肯定应该做您认为适合您的情况的事情。谢谢。我现在正在看链接。你能在这里回答我的另一个问题(关于重构)吗?:@w0051977我回答了你的另一个问题。谢谢+1作为战略模式的参考。你能在这里回答我的另一个问题(关于重构)吗?:stackoverflow.com/questions/14366815/…