一 面向對象和面向過程
前端js編程和及后端php編程,大體上有“面向過程”和“面向對象”兩種開發思路。
簡單業務需求使用“面向過程”思路倒是不錯,簡單快捷。然而隨着業務邏輯增加,功能擴展及維護,慢慢會發現,之前的面向過程開發思路,漸漸不好使了。曾經遇到一個項目,多城市選擇,既可以選擇省,也可以選擇市,但最多只能為3個,且不能重復。當時js用的就是面向過程方式寫的,外加封裝幾個函數。但越往后,越發現,這種代碼思路,后期維護,功能擴展,簡直就是大坑。比如客戶之前已經多城市選擇,如何編輯;假如一個頁面多個地方都要用到多城市選擇;假如手機端,pc端都要用到多城市選擇;假如現在不再是三個,而是不限制個數,又該怎么做……后來再改起來,真是一句話”那滋味,那酸爽,誰用誰知道“……
總結起來就是,面向過程思路編程,不容易形成系統或架構,后期維護功能擴展成本較大,特別是解決代碼重用以及“耦合”問題上,面向過程有些乏力。這些問題都可以通過面向對象編程解決,類,對象,繼承,多態……個人感覺,php高階階段就是架構能力,架構離不開設計模式,設計模式正需要面向對象思想。我想java語言之所以常年位居前世界最流行語言榜,跟它本身一上來就是面向對象思想密不可分。而且一般情況下,功能復雜的js插件,庫,往往跟面向對象思想密不可分。
所以,前后端編程都有必要深入研究面向對象思想。
二 php基於面向對象學習提升
《深入php面向對象模式與實踐》一書中推薦php程序員學習路線是:
1.php入門基礎(語法,常用函數和擴展);
2.面向對象的php
3.網站軟件架構設計(設計模式/框架等)
4.網站物理層次架構設計(分布式計算,存儲,負載均衡,高可用性等)
備注:實際中這些階段和工作是交織在一起的。
三 引申js面向對象提升
由上面擴展,個人感覺js提升路線大體為:
1.js基礎(語法,常用函數,包括jquery常用語法,基礎)
2.js面向對象(深入理解js對象繼承等概念,封裝庫,插件)
3.js設計模式(大型復雜應用,框架)
4.物理層次架構設計(性能,內存,效率等)
