這周接手了組裏一箇舊項目,Javadoc顯示這是從2017年開始編寫,@author顯示的是一位前端員工的名字,他在我入職前已離職,好像是去了騰訊。前端
我十分好奇,爲何前端人員的名字會出如今後臺代碼裏?問了下X叔,告知多是當時該同窗正在轉後端,而後人手不夠,就由他來寫了。後端
上面都是題外話。ruby
我瀏覽了一下,項目是用Groovy寫的,我以前沒有接觸過Groovy,可是做爲和Java同樣運行在jvm上的語言,閱讀兩者代碼不會有障礙。在格式方面,Groovy提供了更多的語法糖,讓開發者可以更加愉悅地編寫。微信
可是做爲維護者,則偏偏相反。好比,Groovy用到了動態類型,這對於維護者閱讀理解和調試都增長了必定的難度。架構
下面我想從兩方面談起,一是既生Java,何生Groovy?兩者有什麼區別?二是在開發前,如何進行語言選型。jvm
Java自1995年誕生以來,遇到過幾回重大波折,但都一一化解,而且一路高歌猛進,成爲當前具備不二地位的老大哥。既然老大哥有着衆多擁躉,那麼千秋萬代,豈不美哉?設計
可是,有人的地方就有江湖,語言也是,尤爲以PHP信徒最爲猖獗,這是後話。3d
Groovy誕生於2004年,是一種JVM上的替代語言,這裏的替代不能理解爲取代,而是一種對原有語言的完善和補充。因此說,Groovy的誕生不是爲了革命,而是一種改良。調試
Groovy改良了什麼?cdn
Groovy的語法與Java很類似,基本上只要你會Java,你就能讀懂Groovy,甚至能直接着手寫。可是其設計理念是源於smalltalk和ruby,從這個維度來看Groovy更像是一門膠水語言。因此能夠這麼理解,它博採了其餘門派的一些優勢。
Groovy最大的特色是支持動態類型,相較於Java,它更簡潔,表達能力也更強,具體特性能夠搜索瞭解,這裏暫不贅述。短時間來看,它能夠縮短你的開發週期,提高你的效率,可是長期來看,可能會致使一些問題,好比我如今維護就很吃力,一部分緣由也是由於我菜。
你們可能會萌生這樣一個問題:對於這兩者,在開發時如何選用呢?
首先是技術選型,這是架構師的任務,學問比較高深,須要必定的技術視野和經驗積累,而咱們做爲我的開發者或者是初級工程師,這方面比較欠缺,因此不敢自做主張。不過在開發除工做之外的本身的小項目時,能夠儘可能去自我培養這一種能力。
在語言選型上,有人說,超過200行代碼的項目都不該該使用動態類型,雖然有一點誇張,但仍然有一些道理的,俗話說:「動態類型一時爽,代碼重構火葬場」。有些代碼寫完後,一個月後回頭再看,只有天知地知,你不知由於我也不知。
我認爲,對於我的開發或者2-3人小團隊合做,並且不用長期維護的項目,寫法自由鬆散,追求速度是高效的。此時,Python、Ruby、Groovy這類的語言手到擒來,好不快活。可是對於中大型項目,時間跨度較長的,仍是應該範式優先,即便Java有那麼一點笨重。
首發於個人微信公衆號:字節流