一次简单的代码封装经历

最近公司项目做了一个功能模块里面有个需求,是要求做一个时间筛选的操作,包括今天,昨天,本周,近七天,半月,上月,自定义这个选项,刚刚开始写的代码比较low逼,都是写在控制器controller里面,具体代码如下:

if("0".equals(searchDate)){//今天
bookingManageList =bookingManageService.getBoookingManageList(status,todayStart,todayEnd, null, keyWord, pageNum, pageSize,storeId,drawer);
totalAmount = bookingManageService.getTotalAmount(status,storeId,todayStart,todayEnd,null,keyWord,drawer);//获取总计金额
count =bookingManageService.getCount(status,todayStart,todayEnd, null, keyWord, pageNum, pageSize,storeId,drawer);
}
if("1".equals(searchDate)){//昨天
bookingManageList =bookingManageService.getBoookingManageList(status, yesterdayStart,yesterdayEnd,null,keyWord, pageNum, pageSize,storeId,drawer);
totalAmount = bookingManageService.getTotalAmount(status,storeId,yesterdayStart,yesterdayEnd,null,keyWord,drawer);//获取总计金额
count =bookingManageService.getCount(status, yesterdayStart,yesterdayEnd,null,keyWord, pageNum, pageSize,storeId,drawer);
}
if("2".equals(searchDate)){//本周
bookingManageList =bookingManageService.getBoookingManageList(status, startTimeWeek, endTimeWeek, null, keyWord, pageNum, pageSize,storeId,drawer);
totalAmount = bookingManageService.getTotalAmount(status,storeId,startTimeWeek,endTimeWeek,null,keyWord,drawer);//获取总计金额
count =bookingManageService.getCount(status, startTimeWeek, endTimeWeek, null, keyWord, pageNum, pageSize,storeId,drawer);
}
if("3".equals(searchDate)){//近7天
bookingManageList =bookingManageService.getBoookingManageList(status, DateUtil.formatDate(recentSevenDay,"yyyy-MM-dd")+" 00:00:00",yesterdayEnd, null, keyWord, pageNum, pageSize,storeId,drawer);
totalAmount = bookingManageService.getTotalAmount(status,storeId,DateUtil.formatDate(recentSevenDay,"yyyy-MM-dd")+" 00:00:00",yesterdayEnd,null,keyWord,drawer);//获取总计金额
count =bookingManageService.getCount(status, DateUtil.formatDate(recentSevenDay,"yyyy-MM-dd")+" 00:00:00",yesterdayEnd, null, keyWord, pageNum, pageSize,storeId,drawer);
}
if("4".equals(searchDate)){//本月
bookingManageList =bookingManageService.getBoookingManageList(status, startTimeMonth, endTimeMonth, null,keyWord, pageNum, pageSize,storeId,drawer);
totalAmount = bookingManageService.getTotalAmount(status,storeId,startTimeMonth,endTimeMonth,null,keyWord,drawer);//获取总计金额
count =bookingManageService.getCount(status, startTimeMonth, endTimeMonth, null,keyWord, pageNum, pageSize,storeId,drawer);
}
if("5".equals(searchDate)){//上月
bookingManageList =bookingManageService.getBoookingManageList(status,lastMonthStartTime,lastMonthEndTime, null, keyWord, pageNum, pageSize,storeId,drawer);
totalAmount = bookingManageService.getTotalAmount(status,storeId,lastMonthStartTime,lastMonthEndTime,null,keyWord,drawer);//获取总计金额
count =bookingManageService.getCount(status,lastMonthStartTime,lastMonthEndTime, null, keyWord, pageNum, pageSize,storeId,drawer);
}
if("6".equals(searchDate)){//自定义
bookingManageList =bookingManageService.getBoookingManageList(status,startDate,endDate, null, keyWord, pageNum, pageSize,storeId,drawer);
totalAmount = bookingManageService.getTotalAmount(status,storeId,startDate,endDate,null,keyWord,drawer);//获取总计金额
count =bookingManageService.getCount(status,startDate,endDate, null, keyWord, pageNum, pageSize,storeId,drawer);
}

后来优化封装了一下,立刻代码就变简洁了不少:

public Map<String,String> getDateByStr(String str,String startDate,String endDate){

Map<String,String> map = new Map<String,String>

if("3".equals(str)){
map.put("beginTime", DateUtil.getAnyDate(-7));
map.put("endTime", DateUtil.getAnyDate(0));
}else if("0".equals(str)){
map.put("beginTime", DateUtil.getAnyDate(0));
map.put("endTime", DateUtil.getAnyDate(0));
}else if("1".equals(str)){
map.put("beginTime", DateUtil.getAnyDate(-1));
map.put("endTime", DateUtil.getAnyDate(-1));
}else if("2".equals(str)){
map.put("beginTime", DateUtil.getThisWeekStartAndEnd().get("startTime"));
map.put("endTime", DateUtil.getAnyDate(0));
}else if("4".equals(str)){
map.put("beginTime", DateUtil.getThisMonthStartAndEndDay().get("startTime"));
map.put("endTime", DateUtil.getThisMonthStartAndEndDay().get("endTime"));
}else if("5".equals(str)){
map.put("beginTime", DateUtil.getLastWeekStartAndEnd().get("startTime"));
map.put("endTime", DateUtil.getLastWeekStartAndEnd().get("endTime"));
}else{
map.put("beginTime", startDate);
map.put("endTime", endTime);
}
return map;

}

}

总结:在真正开发过程之中,可能写的比较赶就没有仔细思考怎么写比较好,做事情还是不能急,要先构思好再写,没有想清楚坚决不要动手开始做,做也是白做,做开发,不是在工地上面搬砖,瞎搞就行,一个好的思路,往往就成功了一半,每个做开发的都要有这个觉悟

时间: 2024-11-06 03:42:33

一次简单的代码封装经历的相关文章

【iOS开发-50】利用创建新的类实现代码封装,从而不知不觉实践一个简单的MVC实验

接上次案例谈代码封装.上次案例见:[iOS开发-48]九宫格布局案例:自动布局.字典转模型运用.id和instancetype区别.xib重复视图运用及与nib关系 代码封装的原则是:要保证视图控制器尽量少的接触到其他对象的属性,也就是说,尽量把数据或者属性封装到一个类里面,然后利用类或者对象的方法来调用或者设置数据.而是赤裸裸地把属性都写在视图控制器中.核心作用在于:减少视图控制器的代码量,把数据和属性的处理封装起来,这样也便于其他视图控制器的使用. 要做到的结果就是如下(我们要根据数组里面的

MVP+Dagger2+Rxjava+Retrofit+GreenDao 开发的小应用,包含新闻、图片、视频3个大模块,代码封装良好

练习MVP架构开发的App,算是对自己学过的知识做一个总结,做了有一段时间,界面还算挺多的,代码量还是有的,里面做了大量封装,整体代码整理得很干净,这个我已经尽力整理了.不管是文件(java.xml.资源文件)命名,还是布局设计尽量简单简洁,我对自己写代码的规范还是有信心的- -.代码不会写的很复杂,整个代码结构有很高的统一度,结构也比较简单清晰,方便理解.里面做了大量的封装,包括基类的构建和工具类的封装,再配合Dagger2的使用可以极大地减轻V层(Activity和Fragment)的代码,

iOS开发—音频的播放的简单介绍和封装工具类

iOS开发—音频的播放的简单介绍和封装工具类 一.音效的播放简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中的“背景音乐”,一般播放时间较长 框架:播放音频需要用到AVFoundation.framework框架 二.音效的播放 1.获得音效文件的路径 NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav&qu

java:Spring框架1(基本配置,简单基础代码实现)

1.基本配置: 步骤一:新建项目并添加spring依赖的jar文件和commons-logging.xx.jar: 步骤二:编写实体类,DAO及其实现类,Service及其实现类; 步骤三:在src下新建配置文件applicationContext.xml,并配置bean节点和property: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springfr

原生ajax调用数据简单实例代码

原生ajax调用数据简单实例代码:由于jQuery的盛行,现在使用较多的是jQuery封装好了的ajax,因为解决了浏览器兼容性问题,这对程序员来说就等于去掉了一个心头大患,但并非原生ajax就销声匿迹,并且本人感觉还是对原生的ajax有所了解的好,下面就是一段ajax数据调用的实例代码,非常的简单,初学者可以参考一下.代码如下:一.兼容浏览器部分: function xmlHttpR() { var xmlhttp; if(window.XMLHttpRequest) { xmlhttp=ne

将PL/SQL代码封装在机灵的包中

将代码封装在机灵的包中 http://www.oracle.com/technetwork/issue-archive/2013/13-jan/o13plsql-1872456.html 绝大多数基于PL/SQL的应用都是由成千上万甚至上百万行代码组成,这里面包括了具体多变的用户需求. 商业逻辑的实现最初是由存储过程和函数完毕,可是开发人员须要考虑将这些过程和函数放在包中维护. 何为包? 包是一组PL/SQL代码元素(游标.类型.变量.过程.函数)集合的程序单元. 通常由包声明(对象声明)和包体

Java连接MySQL数据库及简单操作代码

1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘,然后将其目录下的MySQL-connector-java-5.0.5-bin.jar加到classpath里,具体如下: "我的电脑"-> "属性" -> "高级" -> "环境变量",在系统变量那里编辑clas

将PL/SQL代码封装在灵巧的包中

将代码封装在灵巧的包中 http://www.oracle.com/technetwork/issue-archive/2013/13-jan/o13plsql-1872456.html 绝大多数基于PL/SQL的应用都是由成千上万甚至上百万行代码组成,这里面包含了详细多变的用户需求. 商业逻辑的实现最初是由存储过程和函数完成,但是开发者需要考虑将这些过程和函数放在包中维护. 何为包? 包是一组PL/SQL代码元素(游标.类型.变量.过程.函数)集合的程序单元. 通常由包声明(对象声明)和包体(

MVP+Dagger2+Rxjava+Retrofit+GreenDao 开发的小应用,包括新闻、图片、视频3个大模块,代码封装良好

练习MVP架构开发的App,算是对自己学过的知识做一个总结,做了有一段时间,界面还算挺多的.代码量还是有的,里面做了大量封装,总体代码整理得非常干净,这个我已经尽力整理了. 不管是文件(java.xml.资源文件)命名.还是布局设计尽量简单简洁,代码不会写的非常复杂.整个代码结构有非常高的统一度,结构也比較简单清晰,方便理解.里面做了大量的封装,包含基类的构建和工具类的封装.再配合Dagger2的使用能够极大地减轻V层(Activity和Fragment)的代码,假设你有看源代码的话你会发现大部