code review后的一些思考
毕业后的第一份工作已经入职一个月了,中间做了一些公司的入职小项目和几个需求,也多次被部门的同时和组里的同事code review,其中有很多不足的地方,今天正好是周六,就把这些总结出来并与大家分享。
尽量不要使用 if else
先来说说我的需求吧,组件A现在用来加载list 1的一些数据,我现在想让它也能加载list 2的数据。于是,尝试修改组件A,默认加载list 1的数据,如果是list 2就加载list 2的数据。
if(data match list 1) {
// list 1
} else {
// list 2
}
其实,可以精简一下
// list 1
do something
if(data math list 2) {
// list 2
}
这种比较适合默认处理A,走B的概率有,但不是很高。当然,有可能业务比较复杂,需要多层判断,使用if else if else也无可厚非,这个东西还是要根据自己的实际需求来判断是不是需要简化一下if else的使用
find的用途
还是以需求举例吧,现在有一个数组 A,存放着多个同学的id、name、age等信息,接口 B 返回所有同学的id,我想根据id去查找name,找到之后进行属性赋值,我们可能会写for循环、 forEach 或者 filter,但是我觉得 find 更好用一些
const personList = [
{id: 1, name: 'tom'},
{id: 2, name: 'merry'},
{id: 3, name: 'jerry'},
{id: 4, name: 'black'},
]
const p1 = {
id: 1
}
const result = personList.filter((person) => {
return p1.id === person.id
})
console.log(result)
const result2 = personList.find((person) => {
return p1.id === person.id
})
console.log(result2);
控制台里面可以看到filter返回的一个数组,而find返回的是第一个匹配的值,这里不演示foreach是因为forEach不能中途退出(除非抛出异常),如果我们只是查询到匹配的唯一的数据,就很不友好
ES2020 链判断运算符
这个就比较用意思了,我写了两个if else的判断,如果符合条件1,就去数组 1 里面获取内容,否则就去数组 2获取内容 ,找到了之后往对象C 里面添加新属性和值进去。当时,报了一个错误,"TypeError: Cannot read property 'xxx' of undefined",我当时有点懵,想着逻辑没问题啊,就去问了导师,导师看完了说我也遇到过这中错误,大概率是因为你给的值是空,所以没有某个属性,说完我突然明白了,数组 1 或者 数组 2 里面查找出来的对象很有可能是空,然后就用 '?.' 修复了问题。
(如果不了解链运算符的话,可以看看这个掘友的文章 juejin.cn/post/697724…
学会精简代码
平时自己写代码很随意,写的也比较乱,很多东西也不会考虑,因为这个东西可能只有我自己会看到,上班了就感觉大不相同,写的代码要具备基础的可读性,我的导师经常说要考虑可扩展性和可读性,多思考,多总结。
获取数组里的所有某个数据
const personList = [
{ age: 11, name: 'tom' },
{ age: 22, name: 'merry' },
{ age: 33, name: 'jerry' },
{ age: 44, name: 'black' },
{ age: 55, name: '' },
]
const result2 = personList.filter((person) => person.name).map((person) => person.name)
console.log(result2)
// 优化后的代码
const result = personList.map((person) => person.name).filter(Boolean)
console.log(result)
结语
就先写到这吧,有些东西都记不清楚了。。。
转载自:https://juejin.cn/post/7133958280014987272