自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你是一個(gè)編寫(xiě)可調(diào)試代碼的程序員嗎?

移動(dòng)開(kāi)發(fā)
所有的程序最好能夠以某種形式的日志記錄下來(lái),這樣能方便我們即時(shí)知道現(xiàn)在在做什么。而且一旦出現(xiàn)異常,其重要性就愈加明顯了。我們之所以要把程序員分成三六九等,很大一個(gè)原因就是,一個(gè)偉大的程序員會(huì)去寫(xiě)日志和調(diào)試工具,這樣一旦出現(xiàn)問(wèn)題就能調(diào)試程序。

[[121646]]

所有的程序***能夠以某種形式的日志記錄下來(lái),這樣能方便我們即時(shí)知道現(xiàn)在在做什么。而且一旦出現(xiàn)異常,其重要性就愈加明顯了。我們之所以要把程序員分成三六九等,很大一個(gè)原因就是,一個(gè)偉大的程序員會(huì)去寫(xiě)日志和調(diào)試工具,這樣一旦出現(xiàn)問(wèn)題就能調(diào)試程序。

如果程序運(yùn)作正常,那么可能寫(xiě)不寫(xiě)日志沒(méi)啥區(qū)別。但是,不怕一萬(wàn)就怕萬(wàn)一,萬(wàn)一程序崩潰或者出來(lái)一個(gè)錯(cuò)誤的結(jié)果,那么這個(gè)程序員好不好馬上高下立現(xiàn)。

例1:“我們先搞一個(gè)調(diào)試版本吧。”

舉個(gè)例子,測(cè)試人員跑來(lái)告訴我說(shuō)有一個(gè)調(diào)用函數(shù)不工作了。我們先查看了日志,然后發(fā)現(xiàn)原因可能出在相鄰的模塊上。調(diào)用這個(gè)模塊返回的卻是一連串 null 值。當(dāng)我們查閱相鄰模塊的日志記錄并重新運(yùn)行測(cè)試時(shí),卻沒(méi)有獲得任何有用的信息。對(duì)于為什么會(huì)返回 null 毫無(wú)頭緒——不知道是參數(shù)錯(cuò)了,還是外部系統(tǒng)出了故障,亦或是相鄰模塊有 bug,Who knows?

當(dāng)我們?nèi)プ稍冐?fù)責(zé)該段代碼的開(kāi)發(fā)人員時(shí),他們的回答是:“這個(gè)簡(jiǎn)單,我們先搞一個(gè)調(diào)試版本吧。”最終往往還是不行!因?yàn)槲覀兏静恢朗悄睦锍隽藛?wèn)題,出了什么問(wèn)題。而且要是已經(jīng)到了生產(chǎn)階段,增加調(diào)試版本就意味著增加更多額外的工作。代碼的日志里面得包含足夠多的信息,以便于一旦出現(xiàn)問(wèn)題我們可以找到解決的關(guān)鍵所在。

例2:告訴我我們應(yīng)該怎么做

我們產(chǎn)品的一個(gè)作用是為 SMS(短信)找到成本***的途徑并將路徑傳達(dá)給相應(yīng)的手機(jī)。由于當(dāng)前手機(jī)的位置以及用戶所屬的運(yùn)營(yíng)商的不同,理論上存在著很多很多的可能路徑,而且每一條路徑都有一定的成本和相應(yīng)的優(yōu)缺點(diǎn)。此外,還會(huì)有各種意外會(huì)導(dǎo)致不得不禁止某些路徑或者加重某些路徑的權(quán)重。系統(tǒng)通過(guò)給定約束條件,搜索到***的路線然后返回提供給 SMS。

現(xiàn)在,假設(shè)某短信建議使用路徑A發(fā)送,但是我們認(rèn)為路徑B更好,那么路徑A又是怎么被選上的呢?如果沒(méi)有日志資料,光看那可能的成百上千條的線路,看它們的成本和復(fù)雜的算法,我想我會(huì)瘋掉。幸虧日志里給出了之所以選擇路徑A的原因。Thank Godness!

日志里面包含了所有可能的路線,并按成本進(jìn)行排序。哪怕是由于條件限制而淘汰的路線也會(huì)列在日志里,并附上之所以淘汰的原因??傊谌罩纠飼?huì)將如何把所有信息輸入到算法中以得出結(jié)論的各個(gè)步驟描述得一清二楚,以便于我們知道為什么要選擇相應(yīng)路徑。

為什么不愿意寫(xiě)可調(diào)試的代碼?

既然好處大大的,那么為什么不是所有的程序員都愿意寫(xiě)可調(diào)試的代碼呢?原因有三:

1. 得有足夠的自知之明,能認(rèn)識(shí)到萬(wàn)一程序發(fā)生異常的情況。不過(guò)很多程序員往往要經(jīng)過(guò)很長(zhǎng)一段時(shí)間才會(huì)明白“老子并非天下***”。

2. 徹底地測(cè)試代碼才能保證它能在各種場(chǎng)景下都能正常運(yùn)作。而且每個(gè)場(chǎng)景都要寫(xiě)日志。如果不都測(cè)試一下,那你怎么知道哪里需要添加記錄。

3. 很多程序員往往對(duì)自己的代碼做不到精益求精。如果在現(xiàn)場(chǎng)演示的時(shí)候系統(tǒng)出了問(wèn)題,但是在日志里又看不出是為什么,那么***能在日志里加點(diǎn)什么,以防下次再碰到類(lèi)似的情況。

你的代碼是可調(diào)試的嗎?

當(dāng)然也會(huì)有這樣的情況,那就是日志寫(xiě)的很好,但是你還是不知道問(wèn)題的關(guān)鍵原因。這時(shí)候,你可能還是得創(chuàng)建一個(gè)調(diào)試版本。但是你的日志最最起碼得能給出問(wèn)題的線索。

***,請(qǐng)問(wèn)大家,你的代碼是可調(diào)試的嗎?當(dāng)代碼出現(xiàn)問(wèn)題,你的日志能告訴你是怎么回事嗎?

本文鏈接:http://www.cocoachina.com/programmer/20141025/10038.html

責(zé)任編輯:chenqingxiang 來(lái)源: cocoachina
相關(guān)推薦

2014-03-25 10:35:35

程序員代碼調(diào)試

2013-04-15 09:44:01

程序員

2013-12-24 09:59:48

程序員管理

2012-11-28 13:25:27

程序員

2020-02-22 21:51:43

程序員Microsoft SServerSQL

2009-01-08 09:04:18

2009-11-19 10:21:02

2019-07-29 11:51:18

程序員設(shè)計(jì)軟件

2015-09-24 10:21:39

程序員未來(lái)

2014-01-06 09:33:32

程序員管理

2009-05-21 15:58:12

程序員工作經(jīng)驗(yàn)職場(chǎng)

2015-05-18 09:23:33

2020-10-05 21:13:37

程序員技能開(kāi)發(fā)者

2015-04-10 19:37:34

程序員

2010-11-10 11:14:41

項(xiàng)目經(jīng)理

2015-06-08 10:48:39

程序員程序員自白

2011-02-14 13:05:17

PythonWeb

2020-07-10 09:55:15

程序員技能開(kāi)發(fā)者

2015-06-16 10:31:36

程序員

2020-03-27 09:24:39

程序員技能開(kāi)發(fā)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)