在菜鳥階段學習程式時,一般都是一個小小的專案或功能需求,著重的是在怎麼操作程式語言以及簡單的邏輯判斷等,以達成基本的功能需求。但到了中鳥階段,就應該要試著將範圍擴大到整個系統層次,或是專案系統之間的關聯性,放大整個設計的 view。
一個商用系統通常不會只是一個簡單的資料輸入或列印報表而已,較具規模的系統都會以領域知識模型 (Domain Knowledge Model) 來設計與規劃,並且視各元件的功能來切割成數個不同的模組,再大一點的則會分層,一般業界說的三層或多層次架構就是依模組實際執行的功能類型來切分的,最常聽到的是使用者介面層 (Presentation Layer),商業邏輯層 (Business Logic Layer) 與資料存取層 (Data Access Layer),如果還要劃分得更細,還可以加上代理服務,工作流程等不同的層次,高階一點的應用 (ex: BizTalk Server) 則會再加上視覺化流程設計 (ex: Orchestration) 的層次。
當然,一般的開發人員不會接觸到切割到很細緻的層次,但一定會有的是 UI/Busines/Data 這三層,在菜鳥階段,這三層的程式碼大多是混在一起寫的,不過既然已經進入中鳥階段,應該已有受過物件導向的訓練 (不管是課堂還是自學),那麼至少要慢慢的將這三層開始分割,除了要讓各層的運作可以獨立外,也可以訓練自己撰寫元件間程式溝通之高內聚低耦合的習慣,這樣未來元件就可以自由放在不同的程式中,即便修改也不會影響到用戶端程式的運作。
只是這樣還不夠,僅止與分層還是沒辦法學習到大型系統的設計思維,這時除了參閱公司的現有系統外,一些大廠也有開發一些 sample solution 來給開發人員作為參考實作品,這些 sample solution 都有完整的多層次應用程式架構,其範例程式碼也多以實務上常用的習慣來發展,筆者就列舉幾個不錯的 sample solutions:
1. Island Hopper News (Visual Studio 6.0): http://msdn.microsoft.com/en-us/library/aa267041(VS.60).aspx
2. Fitch and Mather Stocks (Visual Studio 6.0, COM+, .NET): http://msdn.microsoft.com/en-us/library/aa289860(VS.71).aspx
3. Duwamish Book Store (Visual Studio 6.0, .NET):
http://msdn.microsoft.com/en-us/library/aa288561(VS.71).aspx
4. Fabrikam Office System Integrated Solution: http://msdn.microsoft.com/en-us/library/aa203058(office.11).aspx
5. Fabrikam Shipping SaaS Sample: http://archive.msdn.microsoft.com/fshipsaascompanion/
6. StockTrader Sample Application: http://msdn.microsoft.com/en-us/netframework/bb499684
多看一些大型的範例應用,配合大量的閱讀以及思考 (當然也要多試多寫),相信在提升自己的層次和視野到中大型應用開發,是輕而易舉的事。