《大道至简》- 重构代码,减少代码的耦合度


作为一个刚刚步入程序猿行列的“小牛犊”,懵懵懂懂的在求知路上探索着,对这个世界充满了无限的向往与好奇。

  常言道:“初生牛犊不怕虎”,其实不是不怕虎,只是这个懵懂少年还不知道其存在的威胁!

  作为一个程序猿行业的“小牛犊”亦是如此。在初学阶段,对于知识点都是一知半解,为了满足需求,无所不用其极。只要能满足需求,根本不考虑代码的可读性和美感,或者说:满足需求是追求的最终宗旨。在只求需求得到满足的时候,同样功能的代码在一个又一个页面出现。对于阅读者来说,这一堆堆臃肿而又丑陋的代码简直就像让他直视那个抠鼻屎的如花。没有再阅读下去的兴趣。作为开发者来说,耦合度太高,简直就像一团乱麻。维护起来也是劳神费力,真想对着屏幕大喊道:“我不干了”!

  总而言之,还是思维的局限性,不能做到天马行空;知识面太窄,没办法举一反三。

实例:

公共方法

//校验自动生成日期是否正确
function checkDate(year,month) {
	var isNextMonth = contractForecastTime();
    var myDate = new Date();
    //取到当前年
    var myYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
	//取到当前月(0-11,0为1月)
	var myMonth = myDate.getMonth()+1;
	//当前日期是1日-24日,且统计月度是本月或者当前日期是25-31日,且统计月度是次月的生成预报,否则不生成预报
	//统计月度如果是12月,并且当前日期是25-31日,则生成次年一月的预报
	if ((isNextMonth == "生成本月" && month == myMonth) || (isNextMonth == "生成次月" && month == myMonth+1) || (isNextMonth == "生成次月" && myMonth == 12 && year == myYear+1 && month == 1)) {
		return true;
	}else if (isNextMonth == "生成本月" && month != myMonth) {
		  layer.msg(当前日期只能生成本月预报, {icon: 0});
		  return false;
	}else if(isNextMonth == "生成次月" && month != myMonth+1){
		if(isNextMonth == "生成次月" && myMonth == 12){
			layer.msg(当前日期只能生成次年1月预报, {icon: 0});
			return false;
		}else{
			layer.msg(当前日期只能生成次月预报, {icon: 0});
			return false;
		}
	}
	return true;
}

调用者

//生成预报
function generateClick() {
 	//获取到统计年度
 	var year = $("#year").combobox(getValue);
 	//获取到统计月度
 	var month = $("#month").combobox(getValue);
 	if (checkDate(year,month)) {
 		//设置预报的板块信息
      $("#brand").val("日立家装");
      //设置预报数据获取类型0: 全部 1:合同残以及公建/房地产报备成功 2:板块家装
      $("#forcastType").val("2");
      $("#area").val("西安");
      $.post("${pageContext.request.contextPath}/plan/plan/forecastNew/generate.do", getFormData("searchForm"), function (json) {
          if (json.success) {
              searchClick();
              layer.msg(json.msg, {icon: 1});
          } else {
              layer.msg(json.msg, {icon: 5, time: 1000});
          }
      }, "JSON");
	}
 	return;
 }

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/290664.html

(0)
上一篇 2022年10月6日
下一篇 2022年10月6日

相关推荐

发表回复

登录后才能评论