一、“千般路”與“磨豆腐”
很久以前聽一個故事:從前有個小伙子,少時有大志,長大后卻無好營生,開了個豆腐作坊,每天磨豆腐累得腰酸背疼。每到夜深人靜,小伙子輾轉反側,總想找條更好的“事業之路”,可是想過千百條、嘗試過幾十條路,都走不通。夜不成寢,白天干活更累,小伙子不由慨嘆:“晚上想過千般路,白天還得磨豆腐”。
不久以前看過一篇文章:《CMM欺騙了中國的軟件業》,內容是對CMM熱的反思。CMM當然不會主動欺騙人,實際上是我們的軟件業自己欺騙自己。我們從來不缺少“某某模式”,“面向某某”,“某某認證”等等聽起來美妙無比的東西,問題是實際的研發過程中能做得到碼?現實是殘酷的,美妙的概念漫天飛舞,開發過程仍然是作坊式的,正是:“晚上想過千般路,白天還得磨豆腐”。
中國的故事通常都有圓滿的結局,現在接著說“磨豆腐”的故事。過了很長時間,小伙子終于面對現實,不再沉迷于不切實際的空想,用心磨好豆腐,閑時琢磨些個竅門,慢慢地,他的豆腐質量越來越好,每天產量也越來越多,作坊越開越大,成了遠近聞名的“豆腐老板”,后來,他做起了別的生意,發現年輕時的空想,其實很多都是可行的,因為現在“能力”和“財力”都不同了。
再說軟件開發。我們不反對任何理論、技術、方法、模式等等,但第一,您的企業或團隊做得到嗎?不要做“如果開發時間延長一倍,就可以做到”之類毫無意義的假設。第二,做了真的有效益嗎?效益是指扣除成本之后的收益。如果不具備這兩點,那么還是不要整天想著“千般路”,首先想想如何好好的“磨豆腐”吧。
對于所有軟件開發來說,代碼編寫都是無可逃避的“磨豆腐”。改進代碼編寫工作,高率效低成本地開發出高質量的代碼,對于軟件產品能否在激烈的競爭中勝出,對于軟件企業的生存和發展,都具有重要的現實意義。
本文是Visual Unit應用的范例項目C++代碼文檔生成器的主題文檔,敘述的正是改進代碼編寫工作的方法和工具,所有內容均經過實戰檢驗,具有"可行"和"效益"兩個特征,"可行"是指較低門檻或沒有門檻,憑現有條件即可實施;"效益"是指能產生立竿見影的效果。
本文所援引的范例項目,模擬最糟糕的開發團隊,最混亂的開發流程:由很少寫代碼的測試和預研部門開發,人員不固定,時間也不固定,誰有空就寫上一些;沒有設計,沒有文檔,基至也不在代碼文件中保存編碼人員的信息,成員完全依賴于閱讀代碼和測試用例來理解其他成員寫的代碼;除了簡單的命名規則外,沒有其他規范,甚至連一個函數原則上不能超過50行之類的基本規范也沒有(范例中有超過200行的函數CMacro::Unwind(),一萬多條路徑)。任何開發團隊和開發流程都會好于范例項目的開發團隊和開發流程,因此,范例所展示的方法和工具,具有"廣泛可行性"。
本文介紹如何進行高效編碼調試和實現徹底的單元測試。編碼調試是任何軟件開發都無可逃避的工作,在Visual Unit的支持下編碼調試,只是把本來就一定要做的工作改變一下方式,不需要多做什么,就可以大幅提高編程效率和質量;另一方面,Visual Unit徹底改變了單元測試難于實施或成本昂貴的局面,無論團隊中開發與測試人員的比例是怎么樣的,都可以輕松快捷地實現徹底的單元測試。
二、高效編碼調試
任何軟件開發,都離不開編碼調試。對于稍為復雜一點的函數,一般來說,編寫幾行代碼,就要執行一下,看它們是否按預想的工作,然后再繼續寫,寫完后還要將各種可能輸入都執行一下。如何執行?一般由別的代碼來調用,也就是說需要驅動,驅動通常是在開始編寫函數實現代碼之前建立,這樣才能一邊編寫一邊調試。驅動大致可分為自然驅動和專門驅動。
自然驅動:利用項目中已有的代碼作為驅動,通常是在被調試的函數中加斷點,從界面執行一個需要調用該函數的功能,調試器中斷時就可以調試了;專門驅動:為需要調試的函數編寫專門的驅動代碼,通過執行驅動代碼來執行被調試函數。
文章來源于領測軟件測試網 http://www.kjueaiud.com/