最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js學(xué)習(xí)總結(jié)之調(diào)式代碼的方法

 更新時(shí)間:2014年06月25日 14:49:00   投稿:hebedich  
調(diào)式代碼很多時(shí)候類似于查案一樣,只是結(jié)果的重要程度不同,警察查案為的是人民安穩(wěn),而我們調(diào)式則是為了系統(tǒng)的安穩(wěn)。既然這樣我們就不要冤枉任何一段代碼和程序,以免他們受到不合理的懲罰。

前言

你有沒有曾經(jīng)調(diào)式某段代碼時(shí),總覺得世界上有鬼?

你有沒有曾經(jīng)調(diào)式API時(shí),總感覺是調(diào)用第三方的接口問題或者文檔說明不對(duì)?

你有沒有曾經(jīng)調(diào)式一個(gè)bug 時(shí),總感覺問題的來源是使用的方式不對(duì)?

你有沒有在安裝一個(gè)服務(wù)時(shí),總感覺文檔或者環(huán)境不相符合?

相信過程和方法,切勿被結(jié)果誤導(dǎo) ............

概述

調(diào)式代碼很多時(shí)候類似于查案一樣,只是結(jié)果的重要程度不同,警察查案為的是人民安穩(wěn),而我們調(diào)式則是為了系統(tǒng)的安穩(wěn)。既然這樣我們就不要冤枉任何一段代碼和程序,以免他們受到不合理的懲罰。

以下的一些過程方法都來自于個(gè)人的總結(jié),從個(gè)人角度說前人的一些方法都是經(jīng)過長(zhǎng)期的經(jīng)驗(yàn)積累,當(dāng)然參考性理論性都比較強(qiáng),而作為個(gè)人的方法,則可能更適合像我等 DS 。

測(cè)試方法

代碼過程式調(diào)式方法

代碼調(diào)式首先要注意的是過程,你必須要理清楚導(dǎo)致最終結(jié)果的思路,也就是作案的過程,從作案過程中的一步步跟進(jìn)得到作案結(jié)果。在作案過程分析中對(duì)于每一個(gè)疑點(diǎn)都必須打上標(biāo)記(也就是代碼中所提到的 log 信息)。經(jīng)過這樣的分析過程后,再進(jìn)行黑盒測(cè)試,添加輸入,驗(yàn)證結(jié)果。最終根據(jù)每一步的標(biāo)記來驗(yàn)證你的判斷,從而找到原因。

以上的方案是一種過程式的調(diào)式方式。這種方式的優(yōu)點(diǎn)不言而喻,直接可以通過一個(gè)測(cè)試就可以分析清楚整個(gè)過程,但是這種方式很耗時(shí)間,理清楚自己的代碼邏輯尚可,而想要理清楚他人邏輯代碼則可要難于上青天。

單元測(cè)試調(diào)式方法

單元測(cè)試的基本目的是保證某個(gè)函數(shù)、類或者某個(gè)功能模塊的正常運(yùn)作,包括其異常情況的測(cè)試驗(yàn)證。而作為程序員最喜歡的驗(yàn)證方式莫過于“打樁”(打樁的含義就是提供假默認(rèn)數(shù)據(jù)),這種方式調(diào)式起來非常方便,但是有一個(gè)不利的地方就是無法再次利用,因?yàn)樵谖覀凃?yàn)證正常以后,很多開發(fā)人員都會(huì)將其注釋或者刪除,因此如果我們?cè)陂_發(fā)環(huán)境開發(fā)完成,但我們希望在測(cè)試環(huán)境驗(yàn)證時(shí),則必須又要重新寫一篇打樁邏輯,那么這樣看,到現(xiàn)網(wǎng)時(shí),則會(huì)更加的麻煩。既然這么多不便,你可以嘗試下面的做法。

添加一個(gè)單元測(cè)試類,這個(gè)類需要控制其權(quán)限,只有通過后臺(tái)登錄或者是命令行才可以執(zhí)行,該類承載的作用就是對(duì)系統(tǒng)的關(guān)鍵邏輯進(jìn)行檢測(cè),并且做出相應(yīng)的測(cè)試輸出結(jié)果。要相信所有的接口類都是可以通過單元測(cè)試類去完成測(cè)試的。很多時(shí)候程序員在質(zhì)疑,這件事情是不是應(yīng)該我們做?其實(shí)還真是需要我們?nèi)プ?,畢竟很多測(cè)試現(xiàn)在做的都是黑盒測(cè)試。

這種調(diào)式方法適合在開發(fā)過程中,并且可以保證我們現(xiàn)網(wǎng)的代碼發(fā)布后運(yùn)行正常。希望大家在計(jì)劃開發(fā)時(shí)間時(shí)也將該過程并于開發(fā)階段。

快速定位法

前面兩個(gè)那么復(fù)雜的過程太理想化了?我的代碼就只有 100 行,并且系統(tǒng)也不復(fù)雜。如果是這樣的話,那么就快速的進(jìn)行定位分析。很多時(shí)候會(huì)遇到

1、輸入正常,輸出異常;

2、輸入正常,邏輯異常,輸出異常;

3、輸入異常,邏輯正常,輸出正常;

4、輸入異常,邏輯異常,輸出無。

在個(gè)人的開發(fā)過程中,我經(jīng)常會(huì)遇到上面的某種類型的問題,比如在 Node.js 開發(fā)過程中,遇到 string.length 提示 string 沒有 length 方法。當(dāng)時(shí)就昏頭的在問自己,為什么其他 string 都有 length 方法,為什么這個(gè)就沒有呢?應(yīng)該很多同學(xué)都知道問題就在于這個(gè) string 根本就不是 string ,只是說你自己把它理想化為 string 了,也就是你輸入的本來就有問題。那么定位這個(gè)問題的最好辦法就是打印輸入,打印輸出即可。

可能其他的程序沒有這么簡(jiǎn)單,但是最基本的就是在主函數(shù)中的會(huì)遇到異常的函數(shù)都進(jìn)行輸入輸出判斷,那樣就可以快速的定位。

切記:不要斷章取義,自以為是。

上面的方法以及過程都只是基于 PHP 或者 Node.js 總結(jié)出來的,對(duì)于 C & C++ 可能存在相似或者相異處。不喜勿噴,且看且珍惜吧。

相關(guān)文章

  • Node.js Event Loop各階段講解

    Node.js Event Loop各階段講解

    今天小編就為大家分享一篇關(guān)于Node.js Event Loop各階段講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • express搭建的nodejs項(xiàng)目使用webpack進(jìn)行壓縮打包

    express搭建的nodejs項(xiàng)目使用webpack進(jìn)行壓縮打包

    對(duì)于打包這個(gè)問題它并不是難點(diǎn),但是對(duì)于我們這種初學(xué)者來說,根本就不知道應(yīng)該怎么做,下面這篇文章主要給大家介紹了關(guān)于express搭建的nodejs項(xiàng)目使用webpack進(jìn)行壓縮打包的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • NodeJS父進(jìn)程與子進(jìn)程資源共享原理與實(shí)現(xiàn)方法

    NodeJS父進(jìn)程與子進(jìn)程資源共享原理與實(shí)現(xiàn)方法

    這篇文章主要介紹了NodeJS父進(jìn)程與子進(jìn)程資源共享原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了nodejs基于cluster模塊實(shí)現(xiàn)父進(jìn)程與子進(jìn)程資源共享的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • node實(shí)現(xiàn)簡(jiǎn)單的反向代理服務(wù)器

    node實(shí)現(xiàn)簡(jiǎn)單的反向代理服務(wù)器

    本篇文章主要介紹了node實(shí)現(xiàn)簡(jiǎn)單的反向代理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 分析node事件循環(huán)和消息隊(duì)列

    分析node事件循環(huán)和消息隊(duì)列

    node的好處毋庸置疑,事件驅(qū)動(dòng),異步非阻塞I/O,以及處理高并發(fā)的能力深入人心,因此大家喜歡用node做一些小型后臺(tái)服務(wù)或者作為中間層和其他服務(wù)配合完成一些大型應(yīng)用場(chǎng)景。
    2021-06-06
  • nodejs實(shí)現(xiàn)日志讀取、日志查找及日志刷新的方法分析

    nodejs實(shí)現(xiàn)日志讀取、日志查找及日志刷新的方法分析

    這篇文章主要介紹了nodejs實(shí)現(xiàn)日志讀取、日志查找及日志刷新的方法,涉及nodejs日期時(shí)間運(yùn)算、轉(zhuǎn)換及日志讀寫等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • Node輸出日志的正確方法示例

    Node輸出日志的正確方法示例

    這篇文章主要為大家介紹了Node輸出日志的正確方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Node.js實(shí)現(xiàn)JS文件合并小工具

    Node.js實(shí)現(xiàn)JS文件合并小工具

    這篇文章主要介紹了Node.js實(shí)現(xiàn)JS文件合并小工具的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • nvm介紹、安裝、報(bào)錯(cuò)處理及使用詳細(xì)步驟

    nvm介紹、安裝、報(bào)錯(cuò)處理及使用詳細(xì)步驟

    所謂nvm就是一個(gè)可以讓你在同一臺(tái)機(jī)器上安裝和切換不同版本node的工具,下面這篇文章主要給大家介紹了關(guān)于nvm介紹、安裝、報(bào)錯(cuò)處理及使用的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • node.js中g(shù)et和post接口教程

    node.js中g(shù)et和post接口教程

    這篇文章主要介紹了node.js中g(shù)et和post接口學(xué)習(xí),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05

最新評(píng)論

临桂县| 牟定县| 忻城县| 庆云县| 大方县| 营山县| 通江县| 汝阳县| 绥宁县| 瑞安市| 科尔| 离岛区| 钟祥市| 淮滨县| 定兴县| 临桂县| 定襄县| 广昌县| 霞浦县| 崇州市| 湟源县| 高雄县| 松阳县| 达日县| 安平县| 四平市| 齐河县| 团风县| 周至县| 酒泉市| 怀来县| 宕昌县| 新营市| 阆中市| 永吉县| 延安市| 句容市| 山阴县| 水城县| 南涧| 咸阳市|