国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

駁《我不是很懂 Node.js 社區(qū)的 DRY 文化》

muddyway / 2235人閱讀

摘要:今天在群里有人討論方老師的文章我不是很懂社區(qū)的文化,我也看了一遍,槽點(diǎn)太多,不知道如何下筆。方老師分析了幾個(gè)依賴最多的包,每個(gè)都只有不到百行代碼。其實(shí)不僅僅是程序員,大部分程序員都不會(huì)準(zhǔn)確的判斷奇數(shù)。很遺憾,也有問題。

今天在群里有人討論方老師的文章《我不是很懂 Node.js 社區(qū)的 DRY 文化》,我也看了一遍,槽點(diǎn)太多,不知道如何下筆。

方老師分析了幾個(gè)依賴最多的 npm 包,每個(gè)都只有不到百行代碼。

比如 is-odd,每周下載 300 萬(wàn)次,但是只有核心 5 行代碼。而且依賴了每周下載 1000 萬(wàn)次的 is-number 庫(kù)。

得出了一個(gè)結(jié)論:

原來有這么多 JS 程序員不會(huì)判斷奇數(shù)

只要 markdown 寫得漂亮,就能迷倒 JS 程序員

1 + "1" 的問題一直在困擾 JS 程序員,我要不要寫一個(gè) add() 庫(kù)解決這個(gè)問題呢

首先第一條:

原來有這么多 JS 程序員不會(huì)判斷奇數(shù)。

其實(shí)不僅僅是 JS 程序員,大部分程序員都不會(huì)準(zhǔn)確的判斷奇數(shù)。

你寫

const isOdd = x => x % 2 === 1;

這是小學(xué)的知識(shí),除以 2,如果除不盡(有余數(shù))那么就是奇數(shù)。正因?yàn)橹R(shí)點(diǎn)很簡(jiǎn)單,所以給人一種隨便一個(gè)程序員都會(huì)判斷的錯(cuò)覺。

現(xiàn)在我們假設(shè)用戶傳入的參數(shù)一定是數(shù)字。

即便如此,這個(gè)函數(shù)依然不能正確判斷奇數(shù)。因?yàn)?b> -3 % 2 的結(jié)果是 -1

有人說那就這么寫:

const isOdd = x => x % 2 !== 0;

隨便一個(gè)小數(shù)就被判斷為奇數(shù)了。更不用說浮點(diǎn)數(shù)中的妖怪 NaNInfinity 了。

那么是不是對(duì) NaNInfinity 直接返回 falst,然后把 -1 的判斷也加上去就行了:

const isOdd = x => x % 2 === 1 || x % 2 === -1;

也是圖樣

9007199254740991 % 2 === 1
9007199254740992 % 2 === 0
9007199254740993 % 2 === 0
9007199254740994 % 2 === 0
9007199254740995 % 2 === 0
// 后面的都是 0

為什么從 9007199254740991 開始呢?因?yàn)檫@個(gè)值是 Number.MAX_SAFE_INTEGER,是 2 ** 53 - 1

那回過頭來看看 is-odd 庫(kù)是怎么實(shí)現(xiàn)的呢?

!!(~~i & 1)

~~i 用于把字符串轉(zhuǎn)換為整數(shù),和 1 進(jìn)行按位與運(yùn)算判斷最后一位是 1 還是 0

很遺憾,也有問題。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94423.html

相關(guān)文章

  • 《略談人類與計(jì)算機(jī)智能》

    摘要:在上看到了這篇略談人類與計(jì)算機(jī)的智能文章,覺得有點(diǎn)意思,但某些地方與我對(duì)智慧的理解有所不同。人類思考的方式與現(xiàn)有計(jì)算機(jī)解決問題的方法有著本質(zhì)的不同,很多情況下人類不是通過理性的分析問題來做出決定的,人類大部分時(shí)候用的都是感覺。 提前說明,我是標(biāo)題黨。 在SF上看到了這篇《略談人類與計(jì)算機(jī)的智能》文章,覺得有點(diǎn)意思,但某些地方與我對(duì)智慧的理解有所不同。這里拿出來與大家分享一番,吐槽的話...

    My_Oh_My 評(píng)論0 收藏0
  • CNCF案例研究:AppDirect

    摘要:部署新版本的時(shí)間從小時(shí)縮短到幾分鐘。上線新服務(wù)不需要門票或與三個(gè)不同的團(tuán)隊(duì)會(huì)面。這減少并隔離了一些復(fù)雜性。該平臺(tái)已經(jīng)集成了,因此當(dāng)團(tuán)隊(duì)部署他們的服務(wù)時(shí),他們會(huì)收到通知警報(bào)和配置。 AppDirect:AppDirect如何通過Kubernetes支持其工程人員的10倍增長(zhǎng) showImg(https://segmentfault.com/img/bVbqyJg?w=2047&h=102...

    dmlllll 評(píng)論0 收藏0
  • CNCF案例研究:AppDirect

    摘要:部署新版本的時(shí)間從小時(shí)縮短到幾分鐘。上線新服務(wù)不需要門票或與三個(gè)不同的團(tuán)隊(duì)會(huì)面。這減少并隔離了一些復(fù)雜性。該平臺(tái)已經(jīng)集成了,因此當(dāng)團(tuán)隊(duì)部署他們的服務(wù)時(shí),他們會(huì)收到通知警報(bào)和配置。 AppDirect:AppDirect如何通過Kubernetes支持其工程人員的10倍增長(zhǎng) showImg(https://segmentfault.com/img/bVbqyJg?w=2047&h=102...

    sydMobile 評(píng)論0 收藏0
  • CNCF案例研究:AppDirect

    摘要:部署新版本的時(shí)間從小時(shí)縮短到幾分鐘。上線新服務(wù)不需要門票或與三個(gè)不同的團(tuán)隊(duì)會(huì)面。這減少并隔離了一些復(fù)雜性。該平臺(tái)已經(jīng)集成了,因此當(dāng)團(tuán)隊(duì)部署他們的服務(wù)時(shí),他們會(huì)收到通知警報(bào)和配置。 AppDirect:AppDirect如何通過Kubernetes支持其工程人員的10倍增長(zhǎng) showImg(https://segmentfault.com/img/bVbqyJg?w=2047&h=102...

    MartinDai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<