美文网首页程序员
一个由isUndefined引起的争议

一个由isUndefined引起的争议

作者: Coding_Life | 来源:发表于2018-10-18 11:40 被阅读0次
handlerOper(operInfo, node) {
  const graphInst = this.graphInst
  this.operateNodes = isUndefined(node) ? graphInst.getSelectedNodes() : [node]
      ......
}

由上面的代码,今天我的同事问了我一个问题,“这里你非得用lodash的isUndefined的吗?”为什么不把

isUndefined(node)

换成

node ?  [node] : graphInst.getSelectedNodes() 

或者

!node ?  graphInst.getSelectedNodes()  :  [node] 

我答,“我想更确定的表达什么情况下会执行为‘true’的情况,什么情况会执行‘false’的情况”。
他问,“你不就是要表达node存在与不存在时的逻辑吗?我那种也行啊”
我答,“不存在就是用undefined来表达吗,我这样不很清楚吗”

后来同事非常不情愿的结束了对话,当然我也没有让他认可。

能有这个认识是在之前的创业公司的前辈告诉我,避免使用隐式类型转换,尽量不要用,等于与不等的判断也要尽量用!==和 ===,当时的我并没有因为隐式转换而踩过什么坑,但是他们是有过的,但我认可这一点的原因主要是来源于这样带来的可读性。

边写边来分析一下同事的question,他的为什么会知道我要表达的是存在与不存在?而不是“为空字符串与不为空字符串”,“为零不为零”,“为空数组不为空数组”,“为空对象不为空对象”?
他能这么认定,你们也许会说是对业务上下文理解。是的,但如果是对于维护代码的新同事那是不是会有以上的疑问呢,按照他觉得的写法。

同事还说,如果node是null或者其他不符合要求的node走到后面的逻辑,后面的处理就会报错了。当时我并没有回答他这个问题,现在想来,不符合的node格式在这里不是我需要cover的,而是使用node的地方需要cover的,我这里只是判断是否有node传入。

有时代码可读性就像润物的春雨一样无声,只有你读过好的代码,你才能知道什么是坏代码的味道。有人说读不懂代码也许不是别人写得不好,而是你能力不够,但是我认为,能够让别人花10秒钟读懂的代码为什么要让别人花10分钟去理解上下文。

Whatever,每个人都有每个人写代码的风格,然而喜欢和谁一起写代码就体现大家的favor。

相关文章

  • 一个由isUndefined引起的争议

    由上面的代码,今天我的同事问了我一个问题,“这里你非得用lodash的isUndefined的吗?”为什么不把 换...

  • 由“洪水”引起的争议

    昨天欣赏简友的一篇文章,当读到“仿佛蓄得满满的洪水”时,感觉这个句子有毛病。“蓄”是一个慢慢增加的过程,而“洪水”...

  • 由住校争议引起的反思

    孩子上五年级了,去了枫叶,离家比较远。各方面的利弊权衡之后,我跟爸爸决定让孩子住校,虽然孩子颇有微词,可是再怎么强...

  • 《晚秋》留一粒火种

    看过汤唯的《色.戒》,一部当时闹的沸沸扬扬、颇具争议的影片。据说引起争议的的原因是此片牵涉到了情色与政治,由...

  • 好标题——让你的钱袋子鼓起来

    引起共鸣 制造悬念 引起争议 颠覆认知

  • 由一个视频引起的

    前两天无意中看到一个访谈节目,才知道原来还有这样一个群体。访谈对象是一位少年的父亲,这位父亲成立了一个公益组织,主...

  • 由记忆引起的…

    如果你的记忆可以删除,你愿意删除吗?这世上又有多少人愿意删除呢? 前段时间我看了一部影片,片名叫做《记忆大师》,心...

  • 由失眠引起的……

    因为失眠引起的头疼,在时隔一个多月再次侵袭了我,仿佛在警告我不要再继续这么浑浑噩噩混日子下去一般。生活跟工...

  • 由火锅引起的

    1 说到冬天,就会想到冷,想到吃火锅,各地对火锅的叫法也不同, 四川叫火锅, 广东叫打边炉(想起来第一次见到...

  • 由“火锅”引起的

    围炉聚炊欢呼处,百味消融小釜中 他缓缓地呼出一口气,看热气升腾,飘下的雪花仿佛晶莹起来,“天真冷呀...

网友评论

    本文标题:一个由isUndefined引起的争议

    本文链接:https://www.haomeiwen.com/subject/hwejzftx.html