亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

一個(gè)簡(jiǎn)單的函數(shù)消滅業(yè)務(wù)代碼的低級(jí)錯(cuò)誤

YFan / 728人閱讀

摘要:所以在這些業(yè)務(wù)代碼中,我相信也沒(méi)什么人會(huì)做構(gòu)建前的校驗(yàn)?zāi)_本或者單元測(cè)試的,所以我們需要一個(gè)簡(jiǎn)單的函數(shù)來(lái)控制變量的賦值,來(lái)避免這種低級(jí)錯(cuò)誤。

日常的前端開(kāi)發(fā)業(yè)務(wù)代碼中,我們經(jīng)常都需要調(diào)試數(shù)據(jù),所以要經(jīng)常更改某些參數(shù)的初始化數(shù)據(jù),或者更改過(guò)程中的數(shù)據(jù)。

但是很多時(shí)候,改了數(shù)據(jù)調(diào)試完之后就忘記改回去了,某個(gè)調(diào)試的場(chǎng)景是依賴(lài)一個(gè)參數(shù)的修改還好,但是需要依賴(lài)幾個(gè)參數(shù)的修改,就很容易漏改回去了。

舉兩個(gè)例子:

一、我們有一個(gè)按鈕來(lái)觸發(fā)彈窗的打開(kāi),而控制彈窗顯隱為變量showDialog,初始化值為false,但是產(chǎn)品說(shuō)彈窗里面的樣式有點(diǎn)問(wèn)題,所以我們?cè)O(shè)置了showDialog的值為true然后修改內(nèi)容(因?yàn)椴豢赡苊看味键c(diǎn)擊按鈕來(lái)打開(kāi)看彈窗效果),最后修改完再將showDialog設(shè)置回false。

//偽代碼
var showDialog = false;  //控制窗口顯隱,調(diào)試需要依賴(lài)其變量值
btn.onclick = () => {
  showDialog = true; 
}

二、我們有個(gè)抽獎(jiǎng)的活動(dòng),邏輯是請(qǐng)求接口之后拿到抽獎(jiǎng)的prize_id之后,對(duì)比prize_id的內(nèi)容,然后決定在視圖中顯示出來(lái),但是我們需要調(diào)試某個(gè)抽獎(jiǎng)結(jié)果的內(nèi)容,當(dāng)然不會(huì)叫接口改返回的prize_id了,所以我們可能會(huì)改傳入顯示模塊的值。

//偽代碼
fetch().then(prize_id => {
  showResult(prize_id)  //顯示抽獎(jiǎng)結(jié)果,調(diào)試需要依賴(lài)其傳入值
})

function?showResult(prize_id){
  //顯示抽獎(jiǎng)結(jié)果的代碼
}

問(wèn)題就在于,很多時(shí)候我們最后忘了改回去,就會(huì)出現(xiàn)彈窗直接打開(kāi)了、每次抽獎(jiǎng)都抽中某個(gè)獎(jiǎng)品的結(jié)果了,這種低級(jí)錯(cuò)誤是不應(yīng)該犯的,但是我也見(jiàn)過(guò)某些app真的直接這樣上了測(cè)試的代碼到生產(chǎn)環(huán)境。

所以在這些業(yè)務(wù)代碼中,我相信也沒(méi)什么人會(huì)做構(gòu)建前的校驗(yàn)?zāi)_本或者單元測(cè)試的,所以我們需要一個(gè)簡(jiǎn)單的函數(shù)來(lái)控制變量的賦值,來(lái)避免這種低級(jí)錯(cuò)誤。

特意寫(xiě)了一個(gè)簡(jiǎn)單的包:https://github.com/ershing/de...

用法:

//引入包dev-debugger
import DevDebugger from "dev-debugger"
//初始化dgb實(shí)例來(lái)控制變量的測(cè)試值
let dbg = new DevDebugger({ debug: true })
//綁定獲取替換的方法,也可以直接調(diào)用dbg.debugVal
let _r = dbg.debugVal.bind(dbg)

實(shí)例有兩個(gè)方法:debugVal和debugCaseTag

/*
  debugVal(pro, dev)
  @params 傳入第一參數(shù)為生產(chǎn)值,第二參數(shù)為調(diào)試值
*/
//也可以綁定方便后面調(diào)用
let _r = dbg.debugVal.bind(dbg)


/*
  debugCaseTag(pro, tag)
  @params 傳入第一參數(shù)為生產(chǎn)值,第二參數(shù)為自命名的唯一標(biāo)簽名稱(chēng)
*/
//前提需要配合初始化的傳參
let dbg = new DevDebugger({ 
  debug: true,
  caseName: "testPrize1",  //調(diào)試的用例
  cases: {  //用例參數(shù)集
    "testPrize1": {
      "myPrize": 3   //標(biāo)簽名稱(chēng)對(duì)應(yīng)的調(diào)試值
    },
    "testPrize2": {
      "myPrize": 6   //標(biāo)簽名稱(chēng)對(duì)應(yīng)的調(diào)試值
    }
  }
})

//也可以綁定方便后面調(diào)用 
let _rt = dbg.debugCaseTag.bind(dbg)

所以上面的例子可以這樣寫(xiě):

一、控制showDialog的變量值

//偽代碼
var showDialog = _r(false, true);  //debug時(shí)值為true
btn.onclick = () => {
  showDialog = true; 
}

二、控制傳入顯隱函數(shù)的值

//偽代碼
fetch().then(prize_id => {
  showResult(_r(prize_id, 3))  //debug時(shí)為3
})

function?showResult(prize_id){
  //顯示抽獎(jiǎng)結(jié)果的代碼
}

當(dāng)然上面也可以用debugCaseTag方法來(lái)將調(diào)試的值放在初始化的函數(shù)當(dāng)中。

然而,在我們構(gòu)建代碼的時(shí)候,當(dāng)然不想有任何調(diào)試的代碼和調(diào)試的值的,所以我又寫(xiě)了一個(gè)babel插件:https://github.com/ershing/ba...

用法:

//修改babel.config.js文件
module.exports = {
  "plugins": 
  process.env.NODE_ENV === "production" 
  ? ["babel-plugin-dev-debugger"] 
  : []
}

注意:

使用這個(gè)babel插件的話,需要在各自文件中import包dev-debugger(也利于單文件組件的獨(dú)立調(diào)試),而且不要將實(shí)例方法賦值出去,可以直接dbg.debugVal或dbg.debugCaseTag使用,也可以bind之后_t或_rt使用,但不要再賦值給其他變量。

我的博客很久沒(méi)怎么寫(xiě)了,回頭看看以前寫(xiě)的技術(shù)文章就像垃圾一樣:www.ershing.cn

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/106629.html

相關(guān)文章

  • 程序員日常工作中如何正確偷懶?

    摘要:大胖心急啊,自認(rèn)為也是個(gè)優(yōu)秀的程序員啊,再出現(xiàn)低級(jí)錯(cuò)誤的話,專(zhuān)業(yè)能力會(huì)被人懷疑的。此時(shí)大胖已經(jīng)在積極的謀劃了,他深深明白了日常的工作中也有很多可以提升的空間,而這些提升不僅僅是技術(shù)上的,更多的是思路和思想上了。 showImg(https://segmentfault.com/img/bVbooVj?w=1080&h=1920);這是北京的雪,昨天剛拍的 又是一個(gè)艷陽(yáng)天,張大胖像一個(gè)天...

    jaysun 評(píng)論0 收藏0
  • 眼淚是真、心酸是真手工測(cè)試會(huì)迷茫是必然、還在手工測(cè)試也該醒醒了...

    摘要:寫(xiě)這篇文章就是想了解手工測(cè)試現(xiàn)在的處境為什么手工測(cè)試會(huì)迷茫呢不知道自動(dòng)化測(cè)試性能測(cè)試會(huì)不會(huì)迷茫。我認(rèn)為手工測(cè)試的迷茫基于兩個(gè)原因一是重復(fù)的測(cè)試相同的方法測(cè)到自己找不著北,有一天猛然抬頭大喊我要改變世界,改變自己,暗示自己換一種工作方法。 ...

    gaomysion 評(píng)論0 收藏0
  • 【debug】事件綁定代碼一個(gè)低級(jí)錯(cuò)誤導(dǎo)致內(nèi)存泄漏

    摘要:靜下來(lái)想了想發(fā)現(xiàn)我犯了一個(gè)低級(jí)錯(cuò)誤。上面的代碼中函數(shù)是在這個(gè)函數(shù)閉包中申明的,在這個(gè)函數(shù)執(zhí)行完畢后,由于它被綁上了事件,引用并不為,所以沒(méi)有被回收。 最近寫(xiě)一個(gè)web應(yīng)用的圖片上傳功能,里面有這么個(gè)場(chǎng)景:點(diǎn)擊上傳按鈕,呼出file input框,選擇完圖片進(jìn)行前端壓縮然后上傳,完畢后將返回的圖片鏈接展示給用戶。這個(gè)功能很常見(jiàn),但是在這里卻翻了船,所以專(zhuān)門(mén)記錄一下這個(gè)bug。 我是這么寫(xiě)...

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

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

0條評(píng)論

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