从同事写的代码中,学习如何写代码2

57 阅读1分钟

首先我的理念代码优不优秀

  1. 直观 (让兄弟们看到就能看懂大概意思)
  2. 参数精简 (精妙的构思)
  3. 可拓展性(函数足够精简)
  4. 等等 (因为我只在中小型公司混着,所以我无了)
const list = [...]
let rateDanger = ''
const cmEmplId = '...'
list.forEach((item) => {
  item.groupEmplApprDtoList.forEach(item2 => {
    if (item2.cmEmplId == cmEmplId) {
      rateDanger = item2.rateDanger
      return true
    }
  })
})

上面代码问题

  1. 是否有多个匹配cmEmplId的值数据
  2. 如果有多个rateDanger = item2.rateDanger 匹配上cmEmplId的值item2.rateDanger是否相同 从代码我们无从知晓意图 所以有两种可能性
// 1.cmEmplId唯一那我们将代码改的更为明确
// 2.同时我们将匹配项cmEmplId作为变量传递
const getRateDanger = (cmEmplId) => {
  const result = list.reduce((result, item) => {
    const arr = Array.isArray(item.groupEmplApprDtoList) ? item.groupEmplApprDtoList : []
    result.push(...arr)
    return result
  }, [])
  const target = result.find((item) => {
    return item.cmEmplId === cmEmplId
  })
  return target?.rateDanger ?? ''
}
// 2.cmEmplId不唯一那我们将代码改的更为明确
const getRateDangerList = (cmEmplId) => {
  const result = list.reduce((result, item) => {
    const arr = Array.isArray(item.groupEmplApprDtoList) ? item.groupEmplApprDtoList : []
    result.push(...arr)
    return result
  }, [])
  const list = result.filter((item) => {
    return item.cmEmplId === cmEmplId
  })
  return list.map(({ rateDanger }) => rateDanger ?? '').filter(Boolean)
}

写代码首先意图要很明确我要干什么,如果你写的代码让兄弟们猜,那恭喜你防御性编程入门了 然后怎么能写好呢组合的概念很重要,像积木一样组合在一起,还有就是命名给一个合适的名字,终是大道至简