毫無疑問,程式設計師是善於思考問題的一族。乙個程式的編寫都是通過:思考、設計、編寫、除錯、測試以及執行這些基本的階段。
但大部分程式設計師都有乙個問題,就是不太願意測試自己的**。他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。
按照理論上,如果**存在問題,那麼測試人員和最終的使用者肯定可以發現這些 bug ,而等待哪個時候再返回來查詢問題到底錯在什麼地方確實代價不小,其代價有:
1. 影響了程式設計師自己的聲譽
2. 影響了產品的質量
3. 影響了客戶的信任度
4. 這個時候再 debug 難度增大了許多。
大的不說,就說多自己聲譽的影響吧。如果你的程式總會有這樣那樣的 bug ,你得到收益會減少,即使你寫了很多**。
其實最後一點也很重要; 在我們面對一塊**的時候,什麼方法都好辦,但如果將這塊**防到龐大的系統中之後,簡單的問題也難以被立即找出來。為了自己考慮,節省自己 debug 的時候,我們應該讓我們的程式盡量沒有 bug 。
那麼怎麼樣才能保證自己的**沒有 bug 來?
程式設計師必須克服一些自身的致命缺點才能夠從根本上解決這個問題。那麼這個問題是什麼?前面我們已經提到,程式設計師對自己的**都非常寬容,認為那是正確的 沒有問題。實際上這種想法比較正常,程式是通過程式設計師思考和設計之後才寫出來,程式設計師不會將自己認為不正確的東西寫到**裡,而到這個時候都一直假設程式 是正確的; 但人非聖賢,怎麼可能不犯錯誤來。實際上程式設計師在對待其他程式設計師時候的態度就很好,帶著一種挑剔和學習的態度; 但一旦對待自己的**就很難這麼做; 這就是最致命的。程式設計師也必須對自己的**帶著挑剔和學習的態度; 這個基礎是假設自己的**是錯誤的,然後需要做的是怎麼樣證明自己的**是正確的。程式設計師自身可以在程式生成的每個階段做這些工作:仔細的設計(這個時候 畫點時間是值得的,必須保證我們對自己的程式有清晰的輪廓後才能開始動手寫)、編寫**時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。
仔細的設計:這個的仔細是說在程式設計師編寫**之前,其必須對**的整個結構以及邏輯結構有明確的清晰的了解,只有這個時候才可以去寫**。這裡沒有談到 文件,但我說到了一定要清晰的思路,但清晰的思路不是每個人都可以在腦袋中直接形成的,很多人都是普通人,沒有辦法在腦袋瓜中把所有問題都想清楚,那麼就 記下來,特別對於複雜的邏輯。
編寫**:對於沒有把握的**,例如:新設計的演算法,最好保證其正確性。可以單獨將這部分測試,這可以讓**模組化的同時又保證了**的正確性。一句話:少量的**保證質量還是比較簡單的。
單元測試:單元測試的重要性不在贅敘了,現在也有許多任務具可以幫助程式設計師並減少工作量。
功能測試:程式設計師保證自己**質量的最後一關; 為了做這樣的工作我們可能必須寫一些**來測試,甚至是測試工作。使用大量的 case 來測試,以及錯誤的 case 。這裡和測試人員的測試不同之處在於:仍然讓程式設計師的注意力放在其自己的**範圍內,減小了排錯的難度。
如果你通過了以上的步驟都找不出你程式中有任何問題的話,那麼我想你的程式應該足夠健壯了。其實還有一點必須說明的就是:** review 。
前面說道了程式設計師對待別人**的態度是挑剔和學習的態度,所以讓其他程式設計師來 review 你的**也是檢查程式有沒有邏輯錯誤的很好的辦法。團隊中應該交叉 review **,這是實踐的經驗。
作為乙個好的程式設計師必須有以上的習慣,以及對待自己**象孩子一樣,我們要愛惜我們的**,同時也要讓**走正確的路。
程式設計師怎麼樣保證自己的程式沒有BUG
毫無疑問,程式設計師是善於思考問題的一族。乙個程式的編寫都是通過 思考 設計 編寫 除錯 測試以及執行這些基本的階段。但大部分程式設計師都有乙個問題,就是不太願意測試自己的 他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。按照理論上,如果 存在問題,那麼測試人員和最終的使用者肯定可以發...
程式設計師怎麼樣才能保證自己的程式沒有BUG
毫無疑問,程式設計師是善於思考問題的一族。乙個程式的編寫都是通過 思考 設計 編寫 除錯 測試以及執行這些基本的階段。但大部分程式設計師都有乙個問題就是不太願意測試自己的 他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。按照理論上,如果 存在問題,那麼測試人員和最終的使用者肯定可以發現...
程式設計師怎麼樣才能保證自己的程式沒有BUG
毫無疑問,程式設計師是善於思考問題的一族。乙個程式的編寫都是通過 思考 設計 編寫 除錯 測試以及執行這些基本的階段。但大部分程式設計師都有乙個問題就是不太願意測試自己的 他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。按照理論上,如果 存在問題,那麼測試人員和最終的使用者肯定可以發現...