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