node.js學(xué)習(xí)調(diào)式代碼的方法
前言
你有沒有曾經(jīng)調(diào)式某段代碼時,總覺得世界上有鬼?
你有沒有曾經(jīng)調(diào)式API時,總感覺是調(diào)用第三方的接口問題或者文檔說明不對?
你有沒有曾經(jīng)調(diào)式一個bug 時,總感覺問題的來源是使用的方式不對?
你有沒有在安裝一個服務(wù)時,總感覺文檔或者環(huán)境不相符合?
相信過程和方法,切勿被結(jié)果誤導(dǎo) ............
概述
調(diào)式代碼很多時候類似于查案一樣,只是結(jié)果的重要程度不同,警察查案為的是人民安穩(wěn),而我們調(diào)式則是為了系統(tǒng)的安穩(wěn)。既然這樣我們就不要冤枉任何一段代碼和程序,以免他們受到不合理的懲罰。
以下的一些過程方法都來自于個人總結(jié),從個人角度說前人一些方法都是經(jīng)過長期的經(jīng)驗積累,當(dāng)然參考性理論性都比較強,而作為個人的方法,則可能更適合像我等 DS 。
測試方法
代碼過程式調(diào)式方法
代碼調(diào)式首先要注意的是過程,你必須要理清楚導(dǎo)致最終結(jié)果的思路,也就是作案的過程,從作案過程中的一步步跟進(jìn)得到作案結(jié)果。在作案過程分析中對于每一個疑點都必須打上標(biāo)記(也就是代碼中所提到的 log 信息)。經(jīng)過這樣的分析過程后,再進(jìn)行黑盒測試,添加輸入,驗證結(jié)果。最終根據(jù)每一步的標(biāo)記來驗證你的'判斷,從而找到原因。
以上的方案是一種過程式的調(diào)式方式。這種方式的優(yōu)點不言而喻,直接可以通過一個測試就可以分析清楚整個過程,但是這種方式很耗時間,理清楚自己的代碼邏輯尚可,而想要理清楚他人邏輯代碼則可要難于上青天。
單元測試調(diào)式方法
單元測試的基本目的是保證某個函數(shù)、類或者某個功能模塊的正常運作,包括其異常情況的測試驗證。而作為程序員最喜歡的驗證方式莫過于“打樁”(打樁的含義就是提供假默認(rèn)數(shù)據(jù)),這種方式調(diào)式起來非常方便,但是有一個不利的地方就是無法再次利用,因為在我們驗證正常以后,很多開發(fā)人員都會將其注釋或者刪除,因此如果我們在開發(fā)環(huán)境開發(fā)完成,但我們希望在測試環(huán)境驗證時,則必須又要重新寫一篇打樁邏輯,那么這樣看,到現(xiàn)網(wǎng)時,則會更加的麻煩。既然這么多不便,你可以嘗試下面的做法。
添加一個單元測試類,這個類需要控制其權(quán)限,只有通過后臺登錄或者是命令行才可以執(zhí)行,該類承載的作用就是對系統(tǒng)的關(guān)鍵邏輯進(jìn)行檢測,并且做出相應(yīng)的測試輸出結(jié)果。要相信所有的接口類都是可以通過單元測試類去完成測試的。很多時候程序員在質(zhì)疑,這件事情是不是應(yīng)該我們做?其實還真是需要我們?nèi)プ,畢竟很多測試現(xiàn)在做的都是黑盒測試。
這種調(diào)式方法適合在開發(fā)過程中,并且可以保證我們現(xiàn)網(wǎng)的代碼發(fā)布后運行正常。希望大家在計劃開發(fā)時間時也將該過程并于開發(fā)階段。
快速定位法
前面兩個那么復(fù)雜的過程太理想化了?我的代碼就只有 100 行,并且系統(tǒng)也不復(fù)雜。如果是這樣的話,那么就快速的進(jìn)行定位分析。很多時候會遇到
1、輸入正常,輸出異常;
2、輸入正常,邏輯異常,輸出異常;
3、輸入異常,邏輯正常,輸出正常;
4、輸入異常,邏輯異常,輸出無。
在個人的開發(fā)過程中,我經(jīng)常會遇到上面的某種類型的問題,比如在 Node.js 開發(fā)過程中,遇到 string.length 提示 string 沒有 length 方法。當(dāng)時就昏頭的在問自己,為什么其他 string 都有 length 方法,為什么這個就沒有呢?應(yīng)該很多同學(xué)都知道問題就在于這個 string 根本就不是 string ,只是說你自己把它理想化為 string 了,也就是你輸入的本來就有問題。那么定位這個問題的最好辦法就是打印輸入,打印輸出即可。
可能其他的程序沒有這么簡單,但是最基本的就是在主函數(shù)中的會遇到異常的函數(shù)都進(jìn)行輸入輸出判斷,那樣就可以快速的定位。
切記:不要斷章取義,自以為是。
上面的方法以及過程都只是基于 PHP 或者 Node.js 總結(jié)出來的,對于 C & C++ 可能存在相似或者相異處。不喜勿噴,且看且珍惜吧。
【node.js學(xué)習(xí)調(diào)式代碼的方法】相關(guān)文章:
越劇的調(diào)式是什么11-05
學(xué)習(xí)的方法01-03
樂理知識中關(guān)于角調(diào)式的知識09-06