分解和拆分需求,写代码的第一步

今天接到的需求是要求在商城的首页弹出一个“系统维护”的通知,20200731~20200804这段时间展示。
如果不做需求的分解和拆分,我们可能是拿到图之后,马上写样式,写完测试发布。完成这个简单的需求。
等等!让我们来研究一下这个简单的需求。

拆分需求

  1. 打开首页,展示弹窗。弹窗可以关闭。
  2. 时间段的控制。每次进入页面,取当天的时间,看是不是在这段时间内。如果超过时间,或者不在控制的时间,这个弹窗通知是不需要展示的。
  3. 如果用户一天内多次打开首页,每次都弹窗提示吗?问产品,答案是每天只要展示一次即可。
  4. 与原有的业务是不是耦合的?查看原有的代码逻辑,发现这个业务与另外的一个提示框是耦合的。那么要定一个顺序,最后商议,利用接口返回的错误信息,先展示另外一块提示框。如果没有这块错误信息,再展示这个需求的弹窗提示。
  5. 仅仅首页上增加这块显示吗?如果是用户从其他的页面进入,要不要提示?问产品之后,答案是任意页面进入都需要弹窗出来。那么我就开始琢磨抽象出来这块业务为公共方法。
  6. 目前的逻辑,是不是很容易兼容这个需求?我找到一个公共类的js文件,每个页面都会先调用这块。于是就把这块业务封装进入这个js文件。这个需求,我仅仅需要更新这个文件即可。
  7. 如果下次又要弹窗显示一个”新的通知“,产品只给图片和时间段。能不能几分钟就搞定?

从元思维考虑一个需求

  1. 时间 时间拉长,长周期,是考虑一次还是考虑多次需求?
  2. 成本 多个文件更改,还是尽量少文件修改,写很多地方,还是写一个函数封装
  3. 地点 改在哪里?每个用到的地方都去改?

代码实现这个需求

			var k = 'iNoticeTime', d = app.formatDate(new Date(), 'yyyyMMdd'),
				s = [20200730, 20200804], t = parseInt(d)
			if (s[0] <= t && s[1] >= t) {
				if (localStorage.getItem(k) != d) {
					localStorage.setItem(k, d)
					dlg = app.modal('<div class="layer" style="position:relative;width:100vw;"><img style="width:100%" src="../static/res/index/notice20200731.png">'+
						'<div class="f" style="position:absolute;bottom:1rem;width:100%;"><a class="ui-dialog-btn" style="margin:0 25%;height:3rem;"></a></div></div>')
					dlg.on('click', '.ui-dialog-btn', function(){
						dlg.close()
						idType()
					})
					return
				}
			}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值