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

優(yōu)秀程序員寫可調(diào)試的代碼

開發(fā) 開發(fā)工具 后端
當(dāng)程序如同預(yù)期的一樣工作時(shí),有日志和沒日志往往沒什么差異。然而,一旦程序失敗,或你得到一個(gè)錯(cuò)誤的結(jié)果的時(shí)候,你會(huì)立即明白優(yōu)秀的程序員和糟糕的程序員之間的差別。

所有的程序都需要某種形式的日志記錄建立在它們之上,以便我們可以觀察到它正在做什么。這尤其在程序出錯(cuò)時(shí)就顯得非常重要。一個(gè)優(yōu)秀的程序員和一個(gè)糟糕的程序員之間的一個(gè)不同之處是一個(gè)優(yōu)秀的程序員會(huì)增加日志或其他工具以便在程序失敗時(shí)方便調(diào)試。

當(dāng)程序如同預(yù)期的一樣工作時(shí),有日志和沒日志往往沒什么差異。然而,一旦程序失敗,或你得到一個(gè)錯(cuò)誤的結(jié)果的時(shí)候,你會(huì)立即明白優(yōu)秀的程序員和糟糕的程序員之間的差別。

[[110498]] 

例1:“讓我們做一個(gè)可調(diào)試的版本”

比如說,測試關(guān)于一個(gè)不能正常工作的調(diào)用case過來找我。我們查看了日志,然后發(fā)現(xiàn)問題貌似出在一個(gè)相鄰的模塊。對其他模塊的調(diào)用返回值為 空。然后我們在那個(gè)相鄰的模塊中做了日志記錄,重新跑了一遍測試case,卻沒有得到任何更多的有用信息。沒有任何線索表明為什么會(huì)返回空 -難道是我們下錯(cuò)了參數(shù),或者是某個(gè)外部系統(tǒng)導(dǎo)致的失敗,那個(gè)相鄰的模塊中是不是存在一個(gè)錯(cuò)誤,又或者?

當(dāng)我們?nèi)ピ儐栘?fù)責(zé)這塊代碼的開發(fā)人員時(shí),我們得到的回答是:“Oh,我們必須做一個(gè)debug的版本來看看到底發(fā)生了什么”。失??!從某種意義 來說,從日志中找到問題所在應(yīng)該是可能的,如果問題存在一個(gè)運(yùn)行的系統(tǒng)中,添加一個(gè)調(diào)試版本將會(huì)有大量的工作要做。代碼需要包含足夠多的信息在日志,以便你至少可以對失敗的原因有一些了解。

例2:“讓我看看我們是如何走到這里的” ??

我們的一個(gè)產(chǎn)品在工作時(shí)會(huì)找到一個(gè)短信息傳遞到手機(jī)***的路徑。依據(jù)手機(jī)的當(dāng)前位置和目標(biāo)用戶所屬的運(yùn)營商,有很多可能的路由選擇, 每一個(gè)都有一個(gè)給定的成本和其他特征。除此之外,可以有一些例外,比如說禁止一些路線,以促進(jìn)其他路線,通常 會(huì)有成千上萬的路由被定義,在每個(gè)case中系統(tǒng)找到***的一個(gè)路由,加上限定條件,并且傳遞消息。

現(xiàn)在,假想某個(gè)SMS信息使用A路線傳遞,但是我們認(rèn)為他應(yīng)該使用B,為什么A會(huì)被選擇呢?如果沒有任何日志記錄信息,我們只剩下成百個(gè)可能的途徑, 他們的成本,例外,以及一個(gè)復(fù)雜的算法,那么祝你好運(yùn)搞清楚為什么A會(huì)被選擇。

在我們的實(shí)現(xiàn)中,所有可能存在的路由以成本大小的順序羅列在日志中,當(dāng)路由被不同的限制條件排除時(shí),排除掉的路由和原因就會(huì)被列在log中。 隨著算法的輸入,以及采取的步驟信信息列在log中,就會(huì)很容易的看出為什么某個(gè)路徑會(huì)被選取。

為什么不呢?

所以,為什么不是所有的程序員都會(huì)寫可調(diào)式的代碼呢?我能想到三個(gè)原因:
1.你必須足夠謙虛的意識(shí)到你的代碼會(huì)有不按預(yù)期工作的時(shí)候。我相信很多程序員會(huì)對此比較難過。
2.如果你徹底地測試了你的代碼,你應(yīng)該確保它會(huì)在很多不同場合工作或失敗。對于每個(gè)方案,很自然地加入日志記錄,如果你沒有測試 那些情況,你不太可能會(huì)在那里添加記錄。
3.很多程序員往往不會(huì)在產(chǎn)品系統(tǒng)中修復(fù)他們自己的代碼。如果在在線系統(tǒng)中有一個(gè)問題,但log并沒有反饋任何信息給你為什么這里會(huì)有一個(gè)問題, 你會(huì)有一個(gè)很強(qiáng)烈的動(dòng)機(jī)去增加log,以便下次遇到相同的情況時(shí)幫助到你。

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

當(dāng)然會(huì)有一些情況,對于程序?yàn)槭裁磿?huì)失敗好的日志信息也不能給你一個(gè)確切的信息。你可能還是要做出那樣的調(diào)試版本, 但是你經(jīng)常做記錄至少還是會(huì)提供給你一些隱藏信息關(guān)于問題的可能性。

所以,你準(zhǔn)備的怎么樣了?當(dāng)你的程序失敗時(shí),log會(huì)告訴你哪兒出錯(cuò)了嗎?

原文鏈接: henrikwarne   翻譯: 伯樂在線 - hahakaka

譯文鏈接: http://blog.jobbole.com/61732/

責(zé)任編輯:林師授 來源: 伯樂在線
相關(guān)推薦

2014-10-27 15:21:40

程序員代碼

2015-06-17 14:24:48

優(yōu)秀程序員整潔代碼

2017-11-14 21:30:15

2019-05-15 09:59:24

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

2014-08-29 11:09:44

程序員

2017-10-17 12:47:19

2015-04-08 11:09:28

優(yōu)秀程序員深入理解你的代碼

2015-09-01 11:20:58

程序員糟糕代碼

2015-08-31 10:14:30

程序員處理代碼糟糕代碼

2013-01-22 13:50:11

程序員前端Web

2012-01-04 09:50:07

程序員

2020-03-09 11:14:25

程序員技術(shù)設(shè)計(jì)

2015-10-12 08:56:37

程序員成長法則

2020-03-29 08:19:56

程序員代碼

2012-05-25 10:54:24

程序員

2021-05-29 07:32:14

優(yōu)秀程序員代碼

2017-10-22 16:16:03

程序員編程代碼

2019-11-07 22:00:22

程序員代碼規(guī)范

2015-07-02 11:20:17

程序員代碼

2012-11-01 13:46:54

程序員
點(diǎn)贊
收藏

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