Steve Mcconnell:代码大全@1993 (第1版)
《代码大全》(Code Complete) 一書,由 Steve McConnell 撰寫,繁體中文版於 1993 年由學苑出版社出版,是「計算機實用軟體技術系列叢書」中的一本重要著作。本書的核心宗旨與主要論點,旨在弭平當時軟體開發領域中,先進研究成果與普遍開發實踐之間的巨大鴻溝。作者觀察到,儘管軟體開發的研究在品質和方法論上取得了快速進展,但程式設計實務卻未能普遍採用這些新技術,導致許多軟體仍然充滿錯誤、使用過時技術,且無法滿足使用者需求。本書的目標正是要縮短新技術從學術研究到工業實踐的推廣週期,讓廣大程式設計師能夠迅速掌握並應用最新的軟體開發方法和技巧。
本書最核心的論點之一,是強調軟體開發生命週期中「建構」(Construction) 階段的關鍵重要性。建構階段主要涵蓋詳細設計、編碼、除錯和單元測試等活動。雖然過去的研究和管理往往將重心放在專案管理、需求分析、高階設計或系統測試等其他階段,建構階段卻常常被低估,甚至被視為程式設計初學者或經驗尚淺者所從事的、較為機械化的工作。然而,本書力陳,這種觀點大錯特錯。「建構」絕非次要或乏味的工作,它在整個軟體開發中扮演著樞紐性的角色。
首先,從工作量來看,建構階段在整個開發活動中佔據了相當大的比例,根據專案規模的不同,可能佔總時間的 30%到 80%。任何佔比如此之高的活動,其品質和效率都將直接影響整個專案的成敗。無視建構階段的重要性,等同於無視專案中最耗時且最基礎的部分。
其次,建構是軟體開發流程中的中心環節。需求分析和高階設計為建構奠定了基礎,而後續的測試和維護工作則仰賴建構階段的成果。如果建構階段的品質不高,將會對後續的活動帶來嚴重的負面影響。例如,設計不良或充滿錯誤的程式碼,將使得除錯、測試和維護變得極為困難和昂貴。
第三,建構階段是軟體錯誤的主要來源。本書引用的研究數據顯示,高達 50%到 75%的軟體錯誤是在建構階段引入的。雖然有些論點認為,建構階段的錯誤修改成本相對較低,但本書駁斥了這一點,強調絕對成本可能非常高昂,單一的程式碼錯誤就可能導致數百萬美元的損失。因此,對建構階段的品質管理不應有絲毫鬆懈。
第四,建構階段是軟體開發過程中唯一不可或缺的活動。理論上完整的軟體開發流程應包含需求分析、設計、建構、測試等多個階段。然而,在實際專案中,可能會因時間壓力或資源限制而省略或簡化其他階段,但建構階段是絕對無法跳過的,因為沒有編寫程式碼,就無法產生可執行的程式。因此,改進建構階段的技術和實踐,是提高整體軟體開發效率和品質最直接且最有效的方法。
有鑑於建構階段的重要性及其在實踐中常被忽略的現狀,《代码大全》正是為了填補這一空白而生。本書的另一大論點是,儘管軟體開發已有一些關於高層次方法或特定語言特性的著作,但缺乏一本專門、全面、實用且不受特定語言或環境限制的建構技術指南。本書匯集了學術研究成果和實踐經驗,旨在提供具體的、操作層面的指導,涵蓋從程式碼風格、命名約定、控制結構、資料處理、測試、除錯到程式最佳化等程式設計的各個方面。
本書的另一項重要貢獻是提倡從軟體開發的早期階段就注重品質,而不是將品質保證活動主要集中在測試階段。正如本書所強調的,越早發現並修正錯誤,其成本就越低。在需求分析階段發現並改正錯誤的成本,可能比在維護階段發現並改正的成本低 50 到 100 倍。建構階段處於開發流程的中間,因此,在開始編寫程式碼之前,確保前期的需求分析和設計工作已經充分且高品質地完成,是確保建構成功的重要前提。本書在第三章「軟體建構的先決條件」中詳細闡述了這一點,提供了具體的檢查清單,幫助開發者評估前期工作的準備程度。
此外,本書也從更廣泛的視角探討了影響建構品質的相關主題。例如,第二章專門討論如何利用隱喻(如將軟體開發比作建築或種植)來加深對程式設計過程的理解,這有助於開發者形成更為恰當的心智模型。本書也強調了選擇合適的编程语言的重要性,不同的語言特性會影響程式碼的品質和開發效率。更重要的是,本書提倡建立統一的程式設計規範和風格,這對於多人協作的大型專案尤為關鍵,有助於保持程式碼的整體一致性和可維護性。
總結來說,《代码大全》的主要論點可歸納為:
1. 軟體建構階段(編碼、除錯、單元測試)是軟體開發中工作量最大、錯誤最多、且唯一不可或缺的核心階段,其重要性常被低估。
2. 本書旨在為各個經驗層級的程式設計師提供一套系統化、實用化、基於研究與實踐的建構技術指南,填補了學術理論與實際編程之間的空白。
3. 高品質的建構仰賴於高品質的前期工作(需求與設計),應在開發早期就投入足夠的時間和精力。
4. 軟體品質必須貫穿整個開發生命週期,從早期階段就實施品質保證活動,能顯著降低錯誤修正成本。
5. 本書提供的具體技術和原則(如良好的命名、控制結構、數據處理、測試和除錯技巧)旨在提高程式碼的內在品質,進而提升軟體的整體品質。
6. 本書也探討了專案規模、個人特質、開發過程選擇以及工具應用等廣泛因素對建構品質和效率的影響。
通過系統地闡述建構的重要性、提供具體的操作技巧並將其置於整個軟體開發生命週期的框架下,本書旨在提升程式設計師的技能水平,幫助他們寫出更高品質的程式碼,最終提高軟體開發的整體效率和成功率。
comments
comments for this post are closed