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