一個(gè)由isUndefined引起的爭(zhēng)議

handlerOper(operInfo, node) {
  const graphInst = this.graphInst
  this.operateNodes = isUndefined(node) ? graphInst.getSelectedNodes() : [node]
      ......
}

由上面的代碼,今天我的同事問了我一個(gè)問題,“這里你非得用lodash的isUndefined的嗎?”為什么不把

isUndefined(node)

換成

node ?  [node] : graphInst.getSelectedNodes() 

或者

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

我答,“我想更確定的表達(dá)什么情況下會(huì)執(zhí)行為‘true’的情況,什么情況會(huì)執(zhí)行‘false’的情況”。
他問,“你不就是要表達(dá)node存在與不存在時(shí)的邏輯嗎?我那種也行啊”
我答,“不存在就是用undefined來表達(dá)嗎,我這樣不很清楚嗎”

后來同事非常不情愿的結(jié)束了對(duì)話,當(dāng)然我也沒有讓他認(rèn)可。

能有這個(gè)認(rèn)識(shí)是在之前的創(chuàng)業(yè)公司的前輩告訴我,避免使用隱式類型轉(zhuǎn)換,盡量不要用,等于與不等的判斷也要盡量用!==和 ===,當(dāng)時(shí)的我并沒有因?yàn)殡[式轉(zhuǎn)換而踩過什么坑,但是他們是有過的,但我認(rèn)可這一點(diǎn)的原因主要是來源于這樣帶來的可讀性。

邊寫邊來分析一下同事的question,他的為什么會(huì)知道我要表達(dá)的是存在與不存在?而不是“為空字符串與不為空字符串”,“為零不為零”,“為空數(shù)組不為空數(shù)組”,“為空對(duì)象不為空對(duì)象”?
他能這么認(rèn)定,你們也許會(huì)說是對(duì)業(yè)務(wù)上下文理解。是的,但如果是對(duì)于維護(hù)代碼的新同事那是不是會(huì)有以上的疑問呢,按照他覺得的寫法。

同事還說,如果node是null或者其他不符合要求的node走到后面的邏輯,后面的處理就會(huì)報(bào)錯(cuò)了。當(dāng)時(shí)我并沒有回答他這個(gè)問題,現(xiàn)在想來,不符合的node格式在這里不是我需要cover的,而是使用node的地方需要cover的,我這里只是判斷是否有node傳入。

有時(shí)代碼可讀性就像潤(rùn)物的春雨一樣無聲,只有你讀過好的代碼,你才能知道什么是壞代碼的味道。有人說讀不懂代碼也許不是別人寫得不好,而是你能力不夠,但是我認(rèn)為,能夠讓別人花10秒鐘讀懂的代碼為什么要讓別人花10分鐘去理解上下文。

Whatever,每個(gè)人都有每個(gè)人寫代碼的風(fēng)格,然而喜歡和誰一起寫代碼就體現(xiàn)大家的favor。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天沒有堅(jiān)持太極球,早上起不來,對(duì)不起師父師母我錯(cuò)了!我得好好堅(jiān)持練習(xí) 感悟:今天租了房子,搬東西過去的時(shí)候,車子...
    吳丹丹丹閱讀 235評(píng)論 0 0
  • 也談忠奸:命運(yùn)的車輪 ——觀《大明王朝1566》有感而發(fā) 賦閑在家實(shí)在閑來無事,平日基本不看劇的我破天荒地追了今年...
    小紅兔子閱讀 1,253評(píng)論 2 8
  • 今天我早起了,比起上學(xué)時(shí)候的起早貪黑算不上什么,但我為我的作息即將走上正軌而感到小小的滿足。 像我一樣的年輕人...
    今天也要早睡鴨閱讀 458評(píng)論 0 0
  • 小夏_3f26閱讀 280評(píng)論 0 0

友情鏈接更多精彩內(nèi)容