首先我的理念代码优不优秀
- 直观 (让兄弟们看到就能看懂大概意思)
- 参数精简 (精妙的构思)
- 可拓展性(函数足够精简)
- 等等 (因为我只在中小型公司混着,所以我无了)
const list = [...]
let rateDanger = ''
const cmEmplId = '...'
list.forEach((item) => {
item.groupEmplApprDtoList.forEach(item2 => {
if (item2.cmEmplId == cmEmplId) {
rateDanger = item2.rateDanger
return true
}
})
})
上面代码问题
- 是否有多个匹配cmEmplId的值数据
- 如果有多个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)
}
写代码首先意图要很明确我要干什么,如果你写的代码让兄弟们猜,那恭喜你防御性编程入门了 然后怎么能写好呢组合的概念很重要,像积木一样组合在一起,还有就是命名给一个合适的名字,终是大道至简