1. 程式人生 > >面向物件,更適合JavaScript

面向物件,更適合JavaScript

面向物件程式設計是軟體開發中一個很龐大很複雜的話題,它並不是僅僅學會類、繼承、封裝、多型這些面向物件程式設計語法元素就表示掌握的,這些語法元素只是實現面向物件程式的工具, 就像磚塊、水泥能搭建小屋,也能造高樓大廈,然而在這裡重要的不是磚塊水泥,而是其它因素。所以,利用面向物件技術寫程式,語法元素不是關鍵,關鍵在於組織這些語法元素的方法和技巧。

這些方法和技巧,比如說那威名遠播的23個面向物件設計模式,各種面向物件設計原則,如面向介面程式設計、封裝變化、高內聚、低耦合等等,都有很多相關書籍介紹。

眾所周知,使用面向物件技術的目的是為了寫好程式碼,使程式碼易讀、易維護、足夠靈活。

然而,使用Java、C#之類的血統純正的面向物件程式設計語言卻非常難以實踐面向物件的方法與技巧, 即使程式碼中隨處可見類、封裝、繼承、多型,程式碼質量還是非常差,有面向物件之形,無面向物件之實。

這之中的原因在於,通常使用Java、C#語言寫的程式碼邏輯非常簡單,這兩門語言在web領域使用居多,而web領域的程式多數邏輯只是對資料庫的增刪查改,這些邏輯根本沒有面向物件技巧大顯身手的餘地,俗話說,實踐出真知,既然沒有辦法實踐,自然也沒有辦法很好的掌握, 試問一下,有誰做個網站能用到複雜的設計模式的,如果真有,大多數情況下也是強行使用。 因此,如果想通過寫普通的Java網站,學好面向物件技術,很難, 事倍功半。

然而, 在網站的另一端,面向物件技術卻能大顯神通,那就前端JavaScript領域。理論上講,JavaScript都不能算面向物件程式設計語言,它沒有真正的類,也沒有繼承,要實現這些特性必須通過另類的模擬。不過這並沒有問題,事實上面向物件的精髓並不是class、extends這些關鍵字,而是使用這些關鍵字的方法,只要功力深厚,一草一木皆為武器;只要掌握方法,即使沒有這些關鍵字,通過模擬這些關鍵字也能寫出像樣的面向物件程式。

為什麼面向物件設計應用,在純正的面向物件設計語言中,還不如山寨的JavaScript? 這是因為前端JavaScript程式的邏輯足夠複雜,當然,我說的JavaScript程式不是在網頁上彈出一個對話方塊、讓網頁中某張圖片在隱藏和顯示之間切換,我說的JavaScript程式是指那些複雜的特效,一個獨立的特效程式碼都在千行以上的那種,比如說功能完善的日曆控制元件,支援拖拽節點以及動態載入資料的導航樹形選單、富文字編輯器、各種具有可玩性的JS小遊戲等等, 這類特效都有大量的程式碼,且邏輯複雜, 寫這些程式時,如果只是簡單粗暴的程式碼堆砌, 那極有可能無法最終完成任務,即使完成也毫無維護性可言,這種情況下就強烈需要面向物件這樣的技術來簡化程式碼的複雜性,這也是為什麼面向物件程式設計技巧與方法在前端JavaScript能很好實踐的原因。

總而言之,如果你是一個後端程式設計師,想提高自己編寫高質量程式碼, 然而卻苦於沒辦法實踐書上所學的面向物件技術,那麼不妨去寫寫JavaScript, 當你面對的不是資料庫的增刪查改,而是合理的組織巨量DOM元素,使之達到你想要的效果, 那麼,面向物件不可或缺, 你不用不行,而不是你想用卻沒有場景可以使用。使用JavaScript,會讓你更有寫程式的感覺,因為你不再是資料的搬運工。