標籤:style http color strong 問題 代碼 ar 工作
第3部分 軟體研發工作總結
編程時首先達到正確性,其次考慮效率
在實際的軟體開發項目中,經常會遇到產品開發週期很短的問題。也就是說,開發人員需要在“品質”和“速度”之間做出權衡。具體到程式碼,就存在到底是先考慮實現功能(即保證程式的正確性),還是要一步到位把事情做好(即保證程式的正確性的同時,兼顧其效率)?
在網上,有關這方面的討論也非常的多。微軟亞洲研究院研究員劉未鵬老師寫過一篇文章《編程的首要原則》(http://mindhacks.cn/2009/03/09/first-principles-of-programming/),在這篇文章中,作者就“你們認為編程的首要原則是什嗎?”與網友展開了討論,共給出了5種答案,包括:獲得最多認同的答案,獲得第二認同的答案,一些眾所不一定周知的答案,一些眾所很可能周知的答案和最幽默的答案。其中,“KISS”挺有意思的,它要求程式要盡量簡單,越簡單越好。
在有關程式設計語言(像《C程式設計》)和演算法(像《演算法設計與分析》)這類書上,前輩們總結了好的演算法或程式需要具備的幾個特性,包括:正確性、簡明性、效率和最優性,而正確性是排在最前面的。因此,不管怎樣,“編程的首要原則”是要確保程式的正確性,非簡單性。
對於大部分軟體開發工程師來說,編程時首先達到正確性,其次考慮效率。這也是軟體開發的基本原則。
在實際的軟體開發項目中,有如下因素要求開發人員首先保證程式的正確性,其次考慮效率。
第一,市場形勢千變萬化,產品開發週期很短。正所謂“天下武功,唯快不破”,對于飛速發展的IT行業來說,要想不被淘汰,就必須要先於別人推出產品。公司有生存的壓力,就會逐級傳遞到員工的身上。在產品立項的時候,產品經理會確定一個產品的交付日期。到了研發經理這一級,為了防止產品出現返工的情況,就會在之前確定的日期上面壓縮掉一些。最後分到每個開發人員身上的時候,開發時間已經很短了。要想在這麼短的時間裡將程式寫完,已經是相當的不容易了,就不可能進一步考慮程式的效率、簡單性等。因此,很多時候,公司的大環境不允許開發人員寫出很完美的代碼。
第二,對於開發人員本人來說,除了編寫代碼實現產品需求,還要做很多其它的事情,包括:解決現場程式問題,參加項目會議,寫開發文檔,對程式進行單元測試和整合測試等。除開這些時間,僅僅用於編寫代碼的時間就更少了。要想在極短的時間裡編寫出很完美的代碼,幾乎是不可能的,所以才會出現一個產品有好幾個版本(如1.0版本、2.0版本等),這其實就是在逐個版本地修正之前版本程式中的錯誤或考慮不完全的地方。因此,編程時要以正確性為首要目的。
第三,公司做任何產品,都是要考慮成本的。如果產品的準系統已經實現了,並且客戶已經驗收了,那麼幾乎沒有必要再讓開發人員對程式反覆修改,以達到高效率和儘可能的簡單。如果要這麼做,需要投入相當的物力、財力和人力,而其效果也不是那麼的明顯。因此,大部分產品的程式都僅僅是正確而已,離最優還有很大的差距。對於那些追求完美的畢業生來說,如果剛看到程式碼,可能會覺得很失望。但一旦在公司待久了,就會明白其中的道理。
“品質”和“速度”之間如何權衡?想必你已經知道答案了。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,號:245924426,歡迎關注!)