Insus.NET较习惯做法,是在程序完毕以后,抽一些少时间对写好的代码重新审视。比如那一个天写的Web
Api的先后来说,发现有广大值得重构代码。

付出ASP.NET
MVC程序,与数量有关有提到的相似是在控制器与Entity实体之间。

开始重构是把Api控制器OrdersController.cs的顺序移至实体OrderEntity.cs中去:
第一
重构public IEnumerable<Order> Get()方法,
图片 1

此措施移至Entity:
图片 2

这么一运动,那在控制器的Get()方法,就能够改为:
图片 3

第二
 重构public void Post(Order o)方法:
图片 4

在实体添加
图片 5

控制器方法重构之后:
图片 6

第三
重构控制器OrderController另三个主意public void Post(Order o):
图片 7

把引方法移至实体:
图片 8

在控制器中的方法被重构之后:
图片 9

第四
重构public void Put(Order
order)方法,把此方法移至Entity中去,并创制叁个新办法,稍作一些小修改:
图片 10

 

在实业OrderEntity中新建的public void Update(Order order, string
fileVirtualPath)方法:
图片 11

 
重构之后,方法体内代码,可应用2句即可,并删除移走的代码:
图片 12

第肆,最终贰个亟需搬移的是Delete()方法:
图片 13

在实体类中,创立一个全新的Delete()方法:
图片 14

 

被重构之后,在控制器看到的Delete()方法,简洁多了。越多的逻辑处理代码不必在控制格局展现。
图片 15

 
说到底OrderController.cs体系重构好的类,如下,删除注明的代码,下机标记1至标记5便是大家地点所重构过的措施:
图片 16

如今我们得以关闭OrderControler.cs类,打开OrderEntity类,对那个类举行重构。找到下边几个措施中
public void AppendDataToExistingJsonFile(Order order, string
fileVirtualPath)
public void Update(Order order, string fileVirtualPath)
public void Delete(Order order, string fileVirtualPath)

上面包车型大巴代代码有冗余,如:
图片 17

把它写成2个个体方法:
图片 18

看来上面代码示例中的金棕箭头否,表明多个章程内一度引用了重构好的代码了。
图片 19

接下去大家又发现多个格局
public void PostAndSaveToFile(Order order, string fileVirtualPath)
public void AppendDataToExistingJsonFile(Order order, string
fileVirtualPath)
public void Update(Order order, string fileVirtualPath)
 public void Delete(Order order, string fileVirtualPath)
中,上边那段代码是将List<Order>对象写成json文件,它们在这么些OrderEntity类中,已经显冗余了:
图片 20

写成八个私有方法:
图片 21

那样多少个方法均能够去除冗余部分的代码,引用那个私有的法子即可,但是第一个办法,public
void PostAndSaveToFile(Order order, string fileVirtualPath)
引用此方法,有些题目,因为重构好的措施传入的参数是List<Order>,因而要求做些修改,如下:
图片 22

还有
public void AppendDataToExistingJsonFile(Order order, string
fileVirtualPath)
public void Update(Order order, string fileVirtualPath)
public void Delete(Order order, string fileVirtualPath)
三个办法中有三个效用是同等的,就是读取Json文件,并转换为List<Order>对象,即便代码不一相同,但是我们是能够把它写成八个联结的:
图片 23

那样子,多少个方法就能够引用此办法:
图片 24

在Update()和Delete()方法,还有2句,是兑现删除文件的效率:

图片 25图片 26

 if (System.IO.File.Exists(newFilePhysicalPath))
{
   File.Delete(newFilePhysicalPath);
}

View Code

能够重构写成2个私家方法并对程序重构如下:
图片 27

OK,最终整理一下6个个体方法:
图片 28

 

相关文章

网站地图xml地图