動態類型語言在企業開發和互聯網領域應用廣泛,如Ruby ,VeloC++(C++培訓 )ity, Python等。 動態類型語言在運行時進行類型推斷,以解釋方式執行,修改即生效,開發靈活性高;而靜態類型語言(如:Java,C/C+/C++) 在執行前做類型檢查,需要編譯運行,對于互聯網前端開發不夠靈活。 因此,許多大型互聯網站選擇 Freemarker, Velocity這樣的動態模板語言作為頁面開發語言,在一定程度上滿足了前端敏捷開發的需求。
然而,對于大型電子商務網站,不僅具有一般互聯網需求頻繁變更的特點,更顯著特點則是業務繁多,業務模型和業務關系復雜。 因此,在此類應用開發中,Velocity 的開發也遇到了一些的問題。
前端模板開發問題
1、降低軟件質量
Velocity是弱類型動態語言,運行時才能檢查出類型錯誤。由于動態類型等特點,有的錯誤在遇到特定參數時,才能激發執行路徑,軟件質量不能很好的保證。
2、測試成本高
由于無法像靜態語言一樣,在運行前進行類型檢查,因此軟件的測試周期長,測試成本高。
3、開發不敏捷
缺乏一些敏捷開發功能如IDE內實時驗證、代碼提示、代碼重構等。雖然能修改即生效,但對于企業級開發,效率較低。
4、維護性差
對于一個大型系統,在重構業務模型(Java Model)或代碼時, 無法知道哪些Velocity模板會受到影響;常常需要花費大量時間搜索相關模板,然后修改、測試。例如:筆者所在公司的一個基礎產品升級,由于受影響模板眾多,重構復雜,項目評估達上千人日。
這些動態語言天生的缺點在企業級和大型網站應用中非常突出,嚴重的影響了開發質量和開發效率。因此,在技術上亟待一種新的高質量、高效率的開發技術。
靜態語言的優勢
綜合考慮后,我們發現動態類型語言(Dynamic Language)“解釋執行方式和修改即生效”的最大優點仍是不能舍棄的。必須從問題出發,找到一條平滑的線路來解決問題。
遇到上述問題時,我們不由自主的會贊美Java的優點:
1、靜態語法和靜態類型實時檢查。
如果賦值類型不匹配,方法不存在,參數類型錯誤等信息能馬上在IDE中顯示;
2、代碼提示:
調用屬性,方法時能代碼提示,開發非常高效;
3、代碼熱鏈接:
通過變量和類名熱鏈接到對應的Java類;
4、代碼重構:
修改一個Java類時,受影響的Java代碼會被實時重新驗證,馬上會顯示紅色的錯誤; 更強大的是重構,對Java類,方法敏性重命名,會自動修改所有相關代碼中對它的引用。
Java等靜態類型語言的這些優勢就是解決問題的方向。那為什么動態語言不能做到這些呢? 原因在于動態語言的根本特點是變量無類型(即弱類型特點),類型在運行時推斷,這使得它無法在開發階段進行類型檢查。