單元測試,以可控方式運行代碼。
生成可以用于部署的產品。
這真是太苛刻了!
并不是所有的代碼都會通過每一個階段。例如解釋型語言可能就不需要編譯,但是它們可以從質量檢查中受益。
構建系統的各個方面
在軟件開發的歷史上,許多種構建系統逐步發展。有時可能會讓人覺得構建系統的數量比編程語言還多。
這里有一個簡短的列表,你自己感覺一下數量會有多少:
對于Java來說,有Maven、Gradle和Ant。
對于C和C++來說,有各種不同的Make。
Clojure這個JVM的語言來說,有Leiningen、Boot和Maven。
對于JavaScript來說,有Grunt。
對于Scala來說,有sbt。
對于Ruby來說,有Rake。
最后,當然我們還有各種各樣的shell腳本。
視企業的大小和構建產品的類型而定,你可能會碰到若干個這樣的工具。為了讓生活更有樂趣,各個企業發明專屬的構建工具也是很常見的事。
作為對許多構建工具復雜性的回應,常用的點子是將特定工具標準化。如果你構建的是復雜的異構系統,效率不會高。例如,用Grunt來構建JavaScript就是比用Maven或者Make來得簡單,而用Maven來構建C語言就不是很有效率,等等。一般來說,工具存在即合理。