重构Web Api程序(Api Controller和Entity)
Insus.NET较习惯做法,是在程序完成之后,抽一些少时间对写好的代码重新审视。比如这些天写的Web Api的程序来说,发现有很多值得重构代码。
开发ASP.NET MVC程序,与数据相关有关联的一般是在控制器与Entity实体之间。
初步重构是把Api控制器OrdersController.cs的程序移至实体OrderEntity.cs中去:
第一:
重构public IEnumerable<Order> Get()方法,
此方法移至Entity:
这样一移动,那在控制器的Get()方法,就可以改为:
第二:
重构public void Post(Order o)方法:
在实体添加
控制器方法重构之后:
第三:
重构控制器OrderController另一个方法public void Post(Order o):
把引方法移至实体:
在控制器中的方法被重构之后:
第四:
重构public void Put(Order order)方法,把此方法移至Entity中去,并创建一个新方法,稍作一些小修改:
在实体OrderEntity中新建的public void Update(Order order, string fileVirtualPath)方法:
重构之后,方法体内代码,可使用2句即可,并删除移走的代码:
第五,最后一个需要搬移的是Delete()方法:
在实体类中,创建一个全新的Delete()方法:
被重构之后,在控制器看到的Delete()方法,简洁多了。更多的逻辑处理代码不必在控制方法呈现。
最后OrderController.cs类别重构好的类,如下,删除注解的代码,下机标记1至标记5就是我们上面所重构过的方法:
现在我们可以关闭OrderControler.cs类,打开OrderEntity类,对这个类进行重构。找到下面三个方法中
public void AppendDataToExistingJsonFile(Order order, string fileVirtualPath)
public void Update(Order order, string fileVirtualPath)
public void Delete(Order order, string fileVirtualPath)
下面的代代码有冗余,如:
把它写成一个私有方法:
看到上面代码示例中的红色箭头否,说明三个方法内已经引用了重构好的代码了。
接下来我们又发现四个方法
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类中,已经显冗余了:
写成一个私有方法:
这样四个方法均可以删除冗余部分的代码,引用这个私有的方法即可,不过第一个方法,public void PostAndSaveToFile(Order order, string fileVirtualPath)
引用此方法,有些问题,因为重构好的方法传入的参数是List<Order>,因此需要做些修改,如下:
还有
public void AppendDataToExistingJsonFile(Order order, string fileVirtualPath)
public void Update(Order order, string fileVirtualPath)
public void Delete(Order order, string fileVirtualPath)
三个方法中有一个功能是相同的,就是读取Json文件,并转换为List<Order>对象,虽然代码不一相同,但是我们是可以把它写成一个统一的:
这样子,三个方法就可以引用此方法:
在Update()和Delete()方法,还有2句,是实现删除文件的功能:
if (System.IO.File.Exists(newFilePhysicalPath))
{
File.Delete(newFilePhysicalPath);
}
可以重构写成一个私有方法并对程序重构如下:
OK,最后整理一下4个私有方法:
重构Web Api程序(Api Controller和Entity)的更多相关文章
- 重构Web Api程序(Api Controller和Entity)续篇
昨天有写总结<重构Web Api程序(Api Controller和Entity)>http://www.cnblogs.com/insus/p/4350111.html,把一些数据交换的 ...
- 张小龙的野心:用小程序重构web|小程序好处及可能的不足
一:张小龙的野心:用小程序重构web 一 很多年以前,张小龙写了一款软件:Foxmail. 这款软件当年有数百万用户,这是一个相当庞大的量,因为彼时网民也只有千万当量级的规模. 我是一个非常忠实的用户 ...
- 重构Web Api程序(Api Controller和Entity) 续篇(2)
一代好的程序,是几经修改与重构出来的.有关此篇Insus.NET对前面所在修改与重构,还是没有觉得很完美简洁.特别对是存在的json文件进行修改或是删除时,我们原先是从文件读取数据,修改或是删除数据, ...
- 重构Web Api程序(Api Controller和Entity) 续篇(1)
经过一系列重构,你眼明的话,还是可以看到还有重构的地方,如: string newFileName = "~/Temp/" + Guid.NewGuid().ToString() ...
- 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】
Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...
- 使用MVC 5、Web API 2、KnockoutJS、Ninject和NUnit开发、架构和测试Web应用程序
做一名微软软件开发人员就像在国际煎饼屋订早餐一样.每道菜都有一堆煎饼,你必须从各种各样的煎饼和糖浆口味中选择.对于web应用程序,解决方案堆栈是一组软件子系统或组件,用于交付功能完整的解决方案(无论是 ...
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- ASP.NET Core 1.0开发Web API程序
.NET Core版本:1.0.0-rc2Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2开发及运行平台:Windows ...
随机推荐
- 【读书笔记】iOS网络-测试与操纵网络流量
一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...
- Nutz中那些好用的工具类
Nutz 是国产的精品开源框架,它全无依赖,只以1兆多的身材,就可以实现SSH全部功能的90%以上.内容主要涵盖了:Ioc.Aop.MVC.Dao.Json等WEB开发的方方面面. 它不仅轻巧,而且 ...
- JS怎么动态命名变量名
[摘要]本文是对JS怎么动态命名变量名的讲解,对学习JavaScript编程技术有所帮助,与大家分享. 1.用eval,例子: 1 2 3 4 5 6 7 <script> var Thr ...
- linux 学习随笔-vim
在自己的home/username目录下 更改vim的配置文件 如果没这个文件 copy其他人的配置文件 然后拖到此目录下 执行mv vimrc ~/.vimrc 更改名字 即可生效 只对当前用户生效 ...
- 利用yii2 gridview实现批量删除案例
作者:白狼 出处:http://www.manks.top/article/yii2_gridview_deleteall本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...
- 编写一个Java应用程序,该应用程序包括2个类:Print类和主类E。Print 类里有一个方法output()功能是输出100 ~ 999之间的所有水仙花数(各位数字的 立方和等于这个三位数本身,如: 371 = 33 + 73 + 13。)在主类E的main方法中来 测试类Print
package zuoye; public class print { void output() { System.out.println("100-999之间的水仙花数是:") ...
- oracle和postgresql 递归查询父子关系记录语法区别
oracle: 一.数据 db数据字段如下: task_id task_name t.parent_task_id *** *** ...
- RedHat Linux 9.0的安装+入门指南(图文并茂)
一,准备工作1,购买或下载Redhat9的安装光盘(3张盘)或镜像文件2,在硬盘中至少留2个分区给安装系统用,挂载点所用分区推荐4G以上,交换分区不用太大在250M左右比较适合,文件系统格式不论,反正 ...
- win7 telnet
一.telnet连接 1.linux linux下可以通过net stat 查看22端口来确认端口是否开放. 然后在cmd中可通过telnet 10.0.200.151 22来连接. 2.win7 w ...
- Vim命令大全
1.进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于 ...