今天突然想到了這個話題。
那麼,有一部分讀者可能並不會很理解我的意思
防禦式程式設計:客戶提出什麼問題,我們就解決什麼問題。
攻擊式程式設計:主動發現問題,其中有一部分問題是效能優化問題,一部分是客戶未能發現的bug。以盡快的方式解決問題。
真實場景:乙個功能被做出來了,開發人員於是試了一遍,覺得功能已經出來了,他心裡面覺得松了口氣,
可以暫時緩了一口氣,然後這個功能的測試任務,被分配給了測試人員。
「叮叮叮,小李,過來一下,你這個功能怎麼怎麼的」。
有以下幾種可能情況:
測試人員: 你這個樣式在ie7下面有問題,ie7+沒問題,所以。。。這算是乙個bug哦。。。
開發人員:我用的就是ie9啊,ie7..這個小問題,沒關係吧?
測試人員:萬一客戶用到了ie7的話。。。。
開發人員:好吧,算是乙個bug,你提交吧。
正想離開。。。
測試人員:你這個功能的程式邏輯有問題,為什麼這個功能所有人都可以使用。這個功能本來是給特定人群用的。
快去做許可權 設定。
開發人員:糟糕,本來這裡我是偷懶的,沒想到測試人員這麼仔細,看來許可權還是要做控制為好。
測試人員:還有乙個問題。。。xx你這裡不合理,那裡也不合理。
開發人員:恩。。恩。。。恩恩。。。。嗯嗯嗯、。。。。。。
最後計算了下,改bug的時間是開發時間的3~4倍。
為什麼會出現這麼多bug呢?
一方面,是自己程式設計的時候,考慮不周全,另一方面,是由於自己得過且過的心理,即使發現了bug,也認為無關緊要。
自己不去改它,從而導致測試的時候出一堆bug。
我們做乙個程式,想過沒有乙個問題,在我們做完程式以後(第一遍),我們有沒有能力把顯性的或者隱性的問題都給挑出來,在測試人員測試以前,把問題都給扼殺在萌芽中,也許,我說的是一部分問題,能夠盡力減輕測試人員的負擔,以及我們修復bug的時間。
我在我們公司有乙個防禦式程式設計的經典例子中告訴你們:我們公司去年接到了乙個1000萬的專案,
具體什麼專案我就不說了,我們做的所有功能,經過測試,是不相容除了ie以外的所有瀏覽器的,也就是說,只有ie才可以使用,而專案的單位是乙個資訊化程度很低的地方。我跟專案經理提過這個問題,他就說,如果我改了ie的相容性問題,他們是不是會提更多的問題?這句話其實也說得對,但是,我就想反問一句,如果你知道這個問題,為什麼在做專案不考慮進去呢,非得要等到專案快做完了,大家才開始面對這些問題嗎?
為什麼不在問題凸顯之前把問題解決掉?能優化的地方,難道要等到客戶提了,我們才去解決嗎?他不提,難道這個問題就不出現了嗎?
什麼是衡量乙個號的程式設計師的標準?一句話:看他能把目前的專案所優化的程度的高低。
說直接一點,就是發現問題,解決問題(攻擊式程式設計)。
好了,今天牢騷就發到這裡,本人入行才1年,講得不妥的地方,還請各位大神多多指出。
契約式程式設計與防禦式程式設計
事情的來由還要從幾十幾億年前的一次星球大 說起,sorry,背錯台詞了,是從幾天前討論介面返回資料和幾個月前討論課件本地資料結構說起,簡單的說,就是碰到約定好的內容出現異常,是我們在程式中內部作相容處理,還是丟擲去。打個比方,我們要解析一段json,約定這個json的格式,只能是正常格式,或者是空,...
契約式程式設計與防禦式程式設計
事情的來由還要從幾十幾億年前的一次星球大 說起,sorry,背錯台詞了,是從幾天前討論介面返回資料和幾個月前討論課件本地資料結構說起,簡單的說,就是碰到約定好的內容出現異常,是我們在程式中內部作相容處理,還是丟擲去。打個比方,我們要解析一段json,約定這個json的格式,只能是正常格式,或者是空,...
防禦式程式設計
防禦式程式設計 防禦式程式設計的主要思想是 子程式應該不因傳入錯誤資料而被破壞,哪怕是由其他子程式產生的錯誤資料。更一般地說,其核心思想是要承認程式都會有問題,都需要修改,聰明的程式設計師應該根據這一點來程式設計序。我們心裡應該自始至終考慮各種各樣的錯誤處理機制 在區域性處理錯誤 使用錯誤碼來傳遞錯...