星空网 > 软件开发 > ASP.net

重构Web Api程序(Api Controller和Entity)

Insus.NET较习惯做法,是在程序完成之后,抽一些少时间对写好的代码重新审视。比如这些天写的Web Api的程序来说,发现有很多值得重构代码。

开发ASP.NET MVC程序,与数据相关有关联的一般是在控制器与Entity实体之间。

初步重构是把Api控制器OrdersController.cs的程序移至实体OrderEntity.cs中去:
第一
重构public IEnumerable<Order> Get()方法,
重构Web Api程序(Api Controller和Entity)

此方法移至Entity:
重构Web Api程序(Api Controller和Entity)


这样一移动,那在控制器的Get()方法,就可以改为:
重构Web Api程序(Api Controller和Entity)


第二
 重构public void Post(Order o)方法:
重构Web Api程序(Api Controller和Entity)


在实体添加
重构Web Api程序(Api Controller和Entity)


控制器方法重构之后:
重构Web Api程序(Api Controller和Entity)


第三
重构控制器OrderController另一个方法public void Post(Order o):
重构Web Api程序(Api Controller和Entity)

把引方法移至实体:
重构Web Api程序(Api Controller和Entity)


在控制器中的方法被重构之后:
重构Web Api程序(Api Controller和Entity)


第四
重构public void Put(Order order)方法,把此方法移至Entity中去,并创建一个新方法,稍作一些小修改:
重构Web Api程序(Api Controller和Entity)

 

在实体OrderEntity中新建的public void Update(Order order, string fileVirtualPath)方法:
重构Web Api程序(Api Controller和Entity)

 
重构之后,方法体内代码,可使用2句即可,并删除移走的代码:
重构Web Api程序(Api Controller和Entity)

第五,最后一个需要搬移的是Delete()方法:
重构Web Api程序(Api Controller和Entity)


在实体类中,创建一个全新的Delete()方法:
重构Web Api程序(Api Controller和Entity)

 

被重构之后,在控制器看到的Delete()方法,简洁多了。更多的逻辑处理代码不必在控制方法呈现。
重构Web Api程序(Api Controller和Entity)

 
最后OrderController.cs类别重构好的类,如下,删除注解的代码,下机标记1至标记5就是我们上面所重构过的方法:
重构Web Api程序(Api Controller和Entity)


现在我们可以关闭OrderControler.cs类,打开OrderEntity类,对这个类进行重构。找到下面三个方法中
public void AppendDataToExistingJsonFile(Order order, string fileVirtualPath)
public void Update(Order order, string fileVirtualPath)
public void Delete(Order order, string fileVirtualPath)

下面的代代码有冗余,如:
重构Web Api程序(Api Controller和Entity)


把它写成一个私有方法:
重构Web Api程序(Api Controller和Entity)


看到上面代码示例中的红色箭头否,说明三个方法内已经引用了重构好的代码了。
重构Web Api程序(Api Controller和Entity)


接下来我们又发现四个方法
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类中,已经显冗余了:
重构Web Api程序(Api Controller和Entity)


写成一个私有方法:
重构Web Api程序(Api Controller和Entity)


这样四个方法均可以删除冗余部分的代码,引用这个私有的方法即可,不过第一个方法,public void PostAndSaveToFile(Order order, string fileVirtualPath)
引用此方法,有些问题,因为重构好的方法传入的参数是List<Order>,因此需要做些修改,如下:
重构Web Api程序(Api Controller和Entity)


还有
public void AppendDataToExistingJsonFile(Order order, string fileVirtualPath)
public void Update(Order order, string fileVirtualPath)
public void Delete(Order order, string fileVirtualPath)
三个方法中有一个功能是相同的,就是读取Json文件,并转换为List<Order>对象,虽然代码不一相同,但是我们是可以把它写成一个统一的:
重构Web Api程序(Api Controller和Entity)


这样子,三个方法就可以引用此方法:
重构Web Api程序(Api Controller和Entity)


在Update()和Delete()方法,还有2句,是实现删除文件的功能:

重构Web Api程序(Api Controller和Entity)重构Web Api程序(Api Controller和Entity)
 if (System.IO.File.Exists(newFilePhysicalPath)){  File.Delete(newFilePhysicalPath);}

View Code


可以重构写成一个私有方法并对程序重构如下:
重构Web Api程序(Api Controller和Entity)


OK,最后整理一下4个私有方法:
重构Web Api程序(Api Controller和Entity)

 




原标题:重构Web Api程序(Api Controller和Entity)

关键词:web

web
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流