码迷,mamicode.com
首页 > 其他好文 > 详细

代码重构

时间:2015-10-16 20:28:51      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

    车辆信息统计模块,菜单设计按天查询、按周查询和按月查询,功能上包括当天(周、月)查询,以及上一天(周、月)查询和下一天(周、月)查询,代码重构主要包括2个方面:

 

1、对多个url请求的优化

  最初设计思路:由于开始时间startdate以及结束时间enddate各不相同,共需要9个url请求来完成上述9个功能。缺点:相似的代码段很多,渲染页面以及渲染数据的代码几乎相同,代码重复率高。

  第一次优化方案:将get请求部分设成变量形式,采用3个url请求即可完成系统功能,3个请求分别实现当天(周、月)查询,以及上一天(周、月)查询和下一天(周、月)查询。缺点:部分简化了html的代码,但是后台controller层的代码还是很复杂。

  最终优化方案:采用 postRequestData 函数,系统只需要这里面的1个url请求,startdate、enddate和idList通过参数形式传入函数中,避免了大段代码的重写,效率大大提高,并且简化了controller层的代码。

 

		postRequestData : function(date1, date2, idList) {
			var self = this;
			//URL: /collection/cars/stat/user
			$.get(‘cars/stat/station‘ + ‘?startDate=‘ + date1 + ‘&endDate=‘
					+ date2 + ‘&idList=‘ + idList, function(json) {
				self.loading.hide();
				if (+json.code === 0) {
					self.renderData(json);
				} else {
					var json = {};
					json.data = [];
					self.renderData(json);
				}
			}, ‘json‘);
		},

 

 2、对时间处理的优化

  最初设计思路:由于涉及当天(周、月),以及上一天(周、月)和下一天(周、月)等多种对日期的处理,系统初始设计时应用了时间处理方法控件。缺点:对时间的处理放在了后台controller层,使得控制层变复杂,不符合设计规范;

                                                                        需要从前端把时间信息传到后台,效率较低。

     第一次优化方案:把对时间处理的业务逻辑放在前端。缺点:对时间的处理需要调用很多次函数来实现业务逻辑,代码依旧繁琐。

  最终优化方案:只采用 nextStatPeriod 1个函数,函数接收revise参数,0代表是当天(周、月),1代表下一天(周、月)、-1代表上一天(周、月),按照日期搜索时只需要将参数

  传递给nextStatPeriod ,在处理不同逻辑时,与revise相乘即可,不用每次搜索都调用计算时间的函数,简化了代码,重复率下降。

 

	
		// 按日期搜索
			dateSearch : function(e) {
				var _self = e.data.self;
				_self.nextStatPeriod(0);
			},
			preSearch : function(e) {
				var _self = e.data.self;
				_self.nextStatPeriod(-1);
			},
			backSearch : function(e) {
				var _self = e.data.self;
				_self.nextStatPeriod(1);
			},


nextStatPeriod : function(revise, idList) {
			//1:next, -1 previous
			if(revise == undefined){
				revise  = 0;
			}
		
	         if(!idList){
	                idList = "";
	         }
			
			var curDate = $("#schedule_date").val();
			var startDate = new Date(curDate.replace(/-/g, "/"));
			var endDate = startDate;
			var info = "";
			
			if (!this.options.isLoadTask) {
				this.loading.show();
				
				var e = $("#select").val();
				
				if (e == ‘day‘) {
					startDate = addDate(startDate, 1*revise);
					endDate = startDate;
					info = "统计时间(天):";
				} else if (e == "week") {
					startDate = getCurrentMonday(startDate);
					startDate = addDate(startDate, 7*revise);
					endDate = addDate(startDate, 6);
					info = "统计时间(周):";
				} else if (e == "month") {
					startDate = getCurrenMonthFirstDate(startDate);
					startDate = addMonth(startDate, 1*revise);
					endDate = addMonth(startDate, 1);
					endDate = addDate(endDate, -1);
					info= "统计时间(月):" ;
				}

				//重新设置时间
				startDate =startDate.Format("yyyy-MM-dd");
				endDate = endDate.Format("yyyy-MM-dd");
				$(‘#schedule_date‘).attr("value",startDate);
				
				$("#monitor").html(info + startDate + "~" + endDate);
				this.postRequestData(startDate, endDate, idList);
			}
		},

 

代码重构

标签:

原文地址:http://www.cnblogs.com/crows/p/4886002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!