[經驗談] 初學者學習ASP.NET MVC該注意哪些基礎? Kevin前輩的經驗談
我每一次上課的時候,都會跟學員分享
當您學完 ASP.NET (Web Form)之後,下一步應該是OOP
有OOP基礎,(有九陽神功護體)學什麼都快!
今天在藍色小舖看見一個FAQ
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20140616093419A84.html
但回答的 Kevin前輩以自身經驗分享給大家
是很深入淺出的見解
希望對於(想要開始)學習 ASP.NET MVC的朋友有幫助
完整文章: http://www.dotblogs.com.tw/mis2000lab/archive/2014/06/16/mvc_or_web_form_20140616.aspx
我必須說,ASP.NET WebForms 與 ASP.NET MVC 的觀念與實作是南轅北轍,
很多人會因為這兩種技術都有著「ASP.NET」的前綴字而有所誤解,
並不是說已經學會或是熟悉 ASP.NET WebForms 之後就可以輕鬆的轉換使用 ASP.NET MVC,
其實並不是這樣的喔(當然也有觀念清楚與深厚基礎的開發人員是可以在短時間從原有 WebForms 基礎就熟悉 MVC)很多開發多年並且熟悉 ASP.NET WebForms 的開發者總會認為不都是一樣 .NET 技術,而且也屬於 ASP.NET 的技術範疇,
所以「直覺」會認為學習 MVC 不是一件需要太多時間去準備或是學習的事情,
很多 WebForms 開發者就會選擇上網自學或是買書自學,有一半的開發人員可以藉由這樣的方式去學好 ASP.NET MVC,
但是有很大一部份的人都會撞牆,而且會遇到很大的阻礙,然後就會覺得 ASP.NET MVC 很難,不好學,甚至於厭惡,
其中一個很大的觀念差異就在於「物件導向」。不是使用了 .NET 的程式語言就表示你是在使用「物件導向」來開發,
物件導向並不是原本在讀書時躺在課本裡的名詞,也不是只有考試才會出現的內容,
無論是使用 C#, VB.NET 還是開發 WebForms 或 MVC,物件導向是隨時隨地都在的,
但是往往很多 ASP.NET WebForms 開發者並不是使用「物件導向」的觀念與方式來開發,
所以在轉而學習 MVC 的時候就會有很大的觀念落差,
我一開始學習並開發 ASP.NET WebForms 的時候也是一樣,並不清楚什麼是物件導向,
頁面一樣是控制項拖拉放的方式來完成,Code Behide 的程式也只是可以 Work 就好,
但是這樣的程式開發真的很累,也很難維護,到最後都是 Google Copy Paste Try Debug.... 一直循環。直到後來有人指導怎麼使用物件導向的觀念與方式來開發之後,就漸漸了解什麼是開發,
在進而了解網頁生命週期是怎麼一回事,逐漸地不再是一昧的使用 Server Controls,而是會使用不一樣的方式來開發,
因為有了這些的學習與經驗之後,讓我轉而學習並使用 ASP.NET MVC 開發就不會有很大的落差與隔閡,而且很快的就上手。學習 ASP.NET MVC 並不是看幾篇文章或是買本書來看完之後就可以說「我已經會 ASP.NET MVC」
我之前參與的一個專案就是使用 ASP.NET MVC 來開發,參與開發的程式設計師資歷與經驗都不同,
其中有一個成員就是會寫程式、學習 ASP.NET MVC 是買書自學的,
但是他的觀念並不是很好,是屬於「能跑、能執行」觀念的人,物件導向對他來說只是需要建立很多的物件來用而已,
很多技術的使用都是 Google Copy Paste Try Debug 的方式,所以很多程式寫法都是東拼西湊,
然後不在乎共同開發時的維護與整合問題,因為自始至終都是抱持著「能跑、能執行就好」,
但是這樣的產出並不好維護,而且問題層出不窮,錯誤連環爆。要學好 ASP.NET MVC 的確是要比 ASP.NET WebForms 更需要知道很多東西,
但這些都不是問題,只要觀念清楚,不管是使用 WebForms 還是 MVC 開發,不都是一樣使用 C# VB.NET 這些 .NET Framework 技術,有些人對於 WebForms 與 MVC 會有很多爭論,其實「不是南北拳的問題,是觀念的問題!」
兩種技術都有不同的使用情境與適合的地方,
技術學了就是要使用,如果公司主要的開發會是使用 ASP.NET WebForms 的話,
那當然就是好好地把工作所需要使用的技術給學好,有時間再關注 MVC,
如果沒有任何包袱的話,就真的好好地從基礎學起,練好馬步,一招一式地去學好 ASP.NET MVC,
學習沒有任何捷徑,一個步驟一個步驟慢慢來,欲速則不達。前面有說到跟我一起參與專案開發的那位開發者,他就是沒有把基礎學好,東拼西湊不說,
很多做法就是使用怪招怪式,看起來是可以解決問題,但往往形成更大的問題,
在整個開發過程中,他的開發速度真的很快,很多指派給他的工作,往往都用很快的時間完成,
但是呢......
之後一直出問題、反覆修改、重作的也都是他所負責的部份,
觀念問題,這是很多前輩一直都在耳提面命的。欲速則不達,真的,基礎一定要學好來(尤其是 ASP.NET MVC,物件導向、前端技術等),
不管是 WebForms 還是 MVC 都是需要抱持一樣的學習態度。
在 ASP.NET WebForms 裡
很多功能都有內建
你只需拉控制項到你的頁面, 再寫相關事件的處理函數就好
但是
在 ASP.NET MVC 裡
內建的功能滿少的
很多時候你都得自己刻 HTML 與 JavaScript 或是找第三方套件來用
雖然ASP.NET MVC的效能會比ASP.NET WebForms 好很多
但是上手的門檻卻比較高