- 好代碼 ,壞代碼
- (英)湯姆·朗
- 1304字
- 2022-12-01 19:13:18
1.1 代碼如何變成軟件
在我們深入說明代碼質量之前,簡短地討論一下代碼如何變成軟件是很有必要的。如果你已經熟悉了軟件開發和部署過程,那么可以跳到1.2節。如果你知道如何編寫代碼,但從未承擔過軟件工程任務,那么本節應該能為你提供一個很好的概要。
軟件是由代碼構成的,這一點顯而易見,無須說明。但是,代碼變成在外界運行的軟件(在用戶手中或者執行業務相關的任務)的過程就不那么明顯了(除非你已經有軟件工程師的工作經驗)。
工程師編寫的代碼一般并不會立即成為一款在外界運行的軟件。通常要經過各種各樣的過程和檢查,以確定這些代碼能夠完成應該承擔的工作,而且不會造成任何破壞。這些過程和檢查往往被稱作軟件開發和部署過程。
閱讀本書并不需要詳細了解這一過程,但至少了解其概況還是有好處的。首先,我們介紹幾個術語。
● 代碼庫(codebase)——包含軟件構建所需各部分代碼的存儲庫。這通常由git、subversion、perforce等版本控制系統管理。
● 代碼提交(submitting code)——有時稱為“提交代碼”(committing code)或“合并-拉取-請求”(merging a pull request),程序員通常更改代碼庫本地副本中的代碼。一旦他們對更改感到滿意,就會將其提交到主代碼庫。注意:在一些機構中,由指定的維護人員而非代碼編寫者將更改提交到代碼庫中。
● 代碼評審(code review)——許多組織要求在代碼提交到代碼庫之前,由另一名工程師進行評審。這有點像代碼校對,“第二雙眼睛”往往能發現代碼編寫者遺漏的問題。
● 提交前檢查(pre-submit check)——有時候稱為“合并前鉤子”(pre-merge hook)、“合并前檢查”或“提交前檢查”,如果測試失敗或者代碼未編譯,這些檢查將阻止代碼提交到代碼庫。
● 發行(release)——軟件是從代碼庫的一個快照中構建的。經過各種質量保證檢查,這款軟件就可以向外界發行了。你常聽到的“剪切發行版本”(cutting a release)這個術語指的就是從代碼庫中取得某個修訂版本,并從中制作一個發行版本的過程。
● 生產(production)——當部署軟件到一臺服務器或者一個系統中(而不是運送到客戶那里)時,這個術語是“在外界運行”的恰當說法。一旦軟件發行并執行業務相關任務,我們就稱其為“運行在生產環境”。
代碼轉化成可運行軟件的過程有許多變種,但這些過程中的關鍵步驟通常如下。
(1)工程師更改代碼庫的本地副本。
(2)工程師修改滿意之后將發送這些更改,以進行代碼評審。
(3)其他工程師將評審代碼,可能會提出修改建議。
(4)一旦作者和評審人員都感到滿意,將提交代碼到代碼庫。
(5)定期從代碼庫剪切發行版本。在不同組織和團隊中,這一工作的頻率也不一樣(從幾分鐘到幾個月不等)。
(6)任何測試失敗或者代碼未編譯,都可能阻止代碼提交到代碼庫,或者阻止其發行。
圖1-2展示了典型軟件開發與部署過程的概況。不同公司和團隊都有各自的版本,各部分的自動化程度也各不相同。
值得注意的是,軟件開發和部署過程本身就是龐大的主題,關于它們的專門著作很多。圍繞這些過程也有許多不同的框架和思想方法,如果你對此感興趣,也值得閱讀更多的相關書籍。本書主要不是針對這些主題的,因此不會進一步詳細介紹。對本書來說,你只需要大概了解代碼是如何變成軟件的就可以了。

圖1-2 典型軟件開發與部署過程的簡化框圖。在不同的組織和團隊中,具體的步驟和自動化水平可能大不相同