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