关于在 JavaScript 中浏览嵌套结构的防御性语法替代方案的意见/反馈

问题描述

最近我被带到了一个新的代码库,在那里我看到了很多这样的代码,几乎无处不在

if(a && a.b && a.b.c && a.b.c.d) {
  // do something with d
}

我注意到,由于产品产生了大量的$$$,我们确实需要避免运行时错误。所以这最终成为团队中的习惯用法,每次你想要对象中的某些东西时,请使用上面的语法。

但正如您所想,这并不是在所有地方都强制执行(尤其是在可能重要的地方),更糟糕的是,在我们已经验证了对象形状的区域中,它已成为一种习惯。

所以这是我的问题:你会推荐什么来帮助改变一个采用这种低效习惯(错误的安全感)来防御性检查每个加入的团队。

这里有一些想法,但我很高兴听到您的故事和您的经验反馈。

一些想法:

  • 使用 ts 或 babel 并使用可选链 => ​​不会改变问题,但会(不是?)简化语法
  • 强制使用唯一的帮助程序来安全访问 (custom / lodash.get / ramda.pathOr,...)
  • 让团队了解 Lenses 概念并使用这些概念
  • 在数据层和表示层之间添加一个强大的验证层
  • 展平嵌套对象并使用展平形式 ({ a: { b: 2 },c: [3,4]} ==> { 'a.b': 2,'c.0': 3,'c.1': 4 })
  • ...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)