原文出處:http://twitter.github.io/effectivescala/index-cn.html
作者:Marius Eriksen, Twitter Inc.
marius@twitter.com (@marius)
翻譯:hongjiang(@hongjiang), tongqing(@tongqing)
Scala是Twitter使用的主要應(yīng)用編程語(yǔ)言之一。很多我們的基礎(chǔ)架構(gòu)都是用scala寫的,我們也有一些大的庫(kù)支持我們使用。雖然非常有效, Scala也是一門大的語(yǔ)言,經(jīng)驗(yàn)教會(huì)我們?cè)趯?shí)踐中要非常小心。 它有什么陷阱?哪些特性我們應(yīng)該擁抱,哪些應(yīng)該避開(kāi)?我們什么時(shí)候采用“純函數(shù)式風(fēng)格”,什么時(shí)候應(yīng)該避免?換句話說(shuō):哪些是我們發(fā)現(xiàn)的,可以高效地使用這門語(yǔ)言的地方?本指南試圖把我們的經(jīng)驗(yàn)提煉成短文,提供一系列最佳實(shí)踐。我們使用scala主要?jiǎng)?chuàng)建一些大容量分布式系統(tǒng)服務(wù)——我們的建議也偏向于此——但這里的大多建議也應(yīng)該自然的適用其他系統(tǒng)。這不是定律,但不當(dāng)?shù)氖褂脩?yīng)該被調(diào)整。
Scala提供很多工具使表達(dá)式可以很簡(jiǎn)潔。敲的少讀的就少,讀的少就能更快的讀,因此簡(jiǎn)潔增強(qiáng)了代碼的清晰。然而簡(jiǎn)潔也是一把鈍器(blunt tool)也可能起到相反的效果:在考慮正確性之后,也要為讀者著想。
首先,用Scala編程,你不是在寫Java,Haskell或Python;Scala程序不像這其中的任何一種。為了高效的使用語(yǔ)言,你必須用其術(shù)語(yǔ)表達(dá)你的問(wèn)題。 強(qiáng)制把Java程序轉(zhuǎn)成Scala程序是無(wú)用的,因?yàn)榇蠖鄶?shù)情況下它會(huì)不如原來(lái)的。
這不是對(duì)Scala的一篇介紹,我們假定讀者熟悉這門語(yǔ)言。這兒有些學(xué)習(xí)Scala的資源:
這是一篇“活的”文檔,我們會(huì)更新它,以反映我們當(dāng)前的最佳實(shí)踐,但核心的思想不太可能會(huì)變: 永遠(yuǎn)重視可讀性;寫泛化的代碼但不要犧牲清晰度; 利用簡(jiǎn)單的語(yǔ)言特性的威力,但避免晦澀難懂(尤其是類型系統(tǒng))。最重要的,總要意識(shí)到你所做的取舍。一門成熟的(sophisticated)語(yǔ)言需要復(fù)雜的實(shí)現(xiàn),復(fù)雜性又產(chǎn)生了復(fù)雜性:之于推理,之于語(yǔ)義,之于特性之間的交互,以及與你合作者之間的理解。因此復(fù)雜性是為成熟所交的稅——你必須確保效用超過(guò)它的成本。
玩的愉快。
更多建議: