一、开发思想
之前的我一直是拿到需求就开始撸码,心里知道我大概要做什么,但是我不知道整个需求的具体逻辑是什么,就是一边撸码,遇到了逻辑再去处理,换句话说就是没有什么整体的理解需求,上来就是干,所以导致BUG多,甚至有时候一个需求的闭环都跑不通,简单的测试用例过不了,自己的代码也很乱,想去再次修改也比较难,因为我不知道我那些屎一样的代码都是啥意思,所以会很恶心。下图就是我之前的开发理念。
现在的我,理解了什么叫做
欲速则不达,拿到需求之后,不回去着急写代码,因为我老大告诉过我们,一个开发写代码的时间正常情况下会占取整个开发时间的百分之三十左右,所以呢,我就会抱着一种,大不了干不完的心态,但是一定要保证我做过的东西有质量,所以会按照以下的流程进行开发工作。
二、开发流程
- 通透的阅读需求文档,理解每个步骤是干什么的,理解这个需求的数据来源和数据流向(避免因为脏数据二在那定位BUG原因)
- 在边理解需求的时候,拿出纸和笔,用作古老的方式将需求的每一步画一遍,这是老大给我的建议,因为我得逻辑思维比较差,所以只能用这样的方式来解决这个问题。
- 开始写代码,在写代码的时候,先写清楚注释,表明自己下面写的代码要干什么,都会有哪些逻辑,然后再去用代码实现自己的所写的注释(这里我所描述的注释就是用自己的大白话描述这里的需求而已)
- 在实现的过程中,需要去想办法让自己的代码简洁
- 多用ES6的语法,可以让代码很简洁
- 一些插槽显示内容的部分,一般超过三个,就去全局配置枚举,这样方便以后的维护工作。
- 按照团队的代码风格进行开发
- 一个方法去做一件事,不要一个方法里面写了几百行代码,到后期自己都懒得去读自己的这些代码(因为既然有几百行代码的JS方法,那就说明里面有比较复杂的逻辑,这样的代码不容易阅读)
- DATA函数里面的数据分类去写。
以下的代码就是自己去尝试按照这个去写,有问题就提出来,我再次学习。
三、知识点
ccEmail(rule, value, callback) {
if (!value.length) {
callback('邮箱不能为空')
}
const reg = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
// 过滤邮箱前面内容的方法
let errArr = value.filter((item) => {
// 截取字符砖“|”后面的内容就是邮箱,去做正则验证
let index = item.lastIndexOf('\|')
if (index != -1) {
item = item.substring(index + 2, item.length)
}
return !reg.test(item)
})
if (errArr.length) {
callback(new Error('请输入正确格式的邮箱'))
}
// 过滤匹配相同类型邮箱的方法(这里应用到ES6的去重才是重点)
let lastArr = value.map((item) => { return item.split('@')[1]});
let errTypeArr = [ ...new Set(lastArr) ];
if (errTypeArr.length != 1) {
callback(new Error('当前收件人只支持相同邮箱后缀'))
} else {
callback()
}
},
验证job - name | email这样的邮箱账号,以及其是同类型(后缀一样)邮箱的判断。
上述就是这个月自己的成长,如有读者有不同的意见或者建议,可以来交流。