js 判空值 最佳实践

查看 331|回复 39
NerbraskaGuy   
用!!吧,虽然可读性很差,追求可读性的话就是枚举一遍了
leegradyllljjjj   
我都是在同项目翻其他文件看别人代码是怎么写的,直接靠屁过来,到时候翻车了直接推锅
huiyuanai709   
首先加上 typeof a == 'undefined'
SpiritQAQ   
isNil?
mizuki9   
const NoneSymbol = Symbol("none");
const isNone = (val: unknown): val is null | undefined => {
  return (val ?? NoneSymbol) === NoneSymbol;
};
yhxx   
抄一下 lodash.isempty 就行了,有现成的
Ketteiron   
我的建议是别用 js 了,换 ts ,0 false undefined null '' [] {} 没有任何歧义
甚至就算写 js 也可以用 ts 规则检查,人脑的静态检查永远比不过语言类型
jsq2627   
我补充一下我上面 #16 的回复,这种要不就别封装,要不就直接用 lodash 这种大家都熟悉的库,至少文档清晰,有 bug 一般也不会怀疑它的内部实现。
下图我节选一个我项目中遇到的情况,封装了一百多个 utils function ,每个都不复杂,实现也很精巧,这些 utils 是一位很有经验的高级程序员写出来的。
但是,每次我阅读业务代码时看到 isNil / isEmpty / isTrue 这种,都会想里面是不是有什么魔法,会浪费很多时间点进去看细节。而且对 AI coding 也很不友好,要到处读文件去看实现,不像 lodash 或者直接 inline 有 well-defined behavior 。

netnr   
C# 味
isNullOrWhiteSpace: (value) => value == null || value.toString().trim() == "",
zogwosh   
只有一个最佳实践,额外封装一个 isEmpty 给自己用,把需要判空的 case 加入判断,即便项目内已经存在了其他同事封装的相同方法,安装了 lodash 。
不要考虑其他同事的阅读性,因为事实就是没有人有动力去用不熟悉的代码的封装,除非必须或有大手推动。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部