likes
comments
collection
share

code review后的一些思考

作者站长头像
站长
· 阅读数 88

毕业后的第一份工作已经入职一个月了,中间做了一些公司的入职小项目和几个需求,也多次被部门的同时和组里的同事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);

code review后的一些思考

控制台里面可以看到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)

code review后的一些思考

结语

就先写到这吧,有些东西都记不清楚了。。。

转载自:https://juejin.cn/post/7133958280014987272
评论
请登录