經過這 30 天,我們從 C# 語法基礎 出發,
一路學到 WPF 架構、資料繫結、LiteDB 本地資料儲存、API 整合、技術指標計算、單元測試,
最終完成了一個能實際運作的桌面選股工具。
這最後一篇,我們不再寫程式,而是回顧整個過程,
整理關鍵學習與架構,並思考接下來可以如何延伸。
階段 | 主題重點 | 關鍵學習 |
---|---|---|
第 1~5 天 | C# 語法基礎 | 變數、條件、方法、流程控制、資料型別 |
第 6~10 天 | 物件導向與例外處理 | Class、OOP 三大特性、SOLID 原則、try-catch 設計 |
第 11~15 天 | WPF 架構 | XAML、MVVM、Binding、DataContext、ViewModel |
第 16~20 天 | 實作與整合 | 綁定 API、顯示股票資料、非同步更新 UI |
第 21~25 天 | 本地資料與 DI | LiteDB、Repository 模式、Microsoft.Extensions.DependencyInjection |
第 26~28 天 | API 管理與開發習慣 | Token 安全性、錯誤處理、Git、例外紀錄與調查原則 |
第 29 天 | 測試與品質保證 | Unit Test、Mock、AutoMock、平行測試與 Thread Safety |
這個系列的目標,是讓學習者每天都能看到實際成果,
不只是理解理論,而是能親手完成可執行的應用程式。
除了語法與框架,你也培養了工程思維。
透過 Interface + Repository + Service 的設計,
讓邏輯清晰、可重複使用,也方便測試。
利用 MVVM 架構分離畫面與邏輯,
在維護階段可以獨立修改畫面或業務邏輯而不互相影響。
在 try-catch 中記錄發生錯誤時的參數與環境,
確保每個問題都能在事後被重現與排查。
導入UnitTest,並加入許多輔助寫UnitTest的套件如: Moq
、Moq.AutoMock
等工具,
讓邏輯可被單元測試驗證,減少錯誤。
最終成果不只是程式,而是一個可維護、可驗證的系統。
整個選股工具最終包含以下主要模組:
模組 | 功能 | 關鍵類別 |
---|---|---|
Model | 資料結構與技術指標定義 | StockProfile , DailyQuote , TechIndicator |
Repository | 存取 LiteDB 與本地資料 | IDatabaseRepository , LiteDbStockRepository |
Service | 呼叫 API、計算指標邏輯 | IIndicatorService , IStockApiService |
ViewModel | 處理資料繫結與命令 | StockFilterViewModel , MainWindowViewModel |
Infrastructure | DI 註冊、系統設定 | App.xaml.cs , ServiceCollection |
Tests | 自動化測試驗證 | IndicatorServiceTests , StockFilterViewModelTests |
此架構結合 MVVM + Repository + DI,
是目前常見的架構中最穩定、易維護的設計模式之一。
這個專案只是起點。以下是幾個可以進一步挑戰的方向。
LiveCharts2
或 OxyPlot
顯示 K 線、KD、MACD。完成這樣的系統後,你已經具備一個能展示在履歷或社群上的完整作品。
可使用 GitHub Actions 在每次 commit 時自動測試:
- name: Run unit tests
run: dotnet test --configuration Release
分享你的開發經驗,例如:
這些都是展示你技術實力的方式。
從第一天的 C# 變數,到最後的 WPF 專案與測試,
你不只是完成一個應用程式,而是走過一段完整的工程開發流程。
你學會的不只是「怎麼寫程式」,
而是「如何設計一個可長期維護的系統」。
這系列的核心理念是:
學會用程式思考問題,用架構解決問題。
不論未來你要開發金融系統、企業應用,或是個人工具,
這套方法論都能成為你的基礎。
在本篇文章中,我附上了我實際完成的 WPF 選股工具應用程式截圖。
這個成品是完整可運作的系統,包含完整的資料抓取、指標分析、UI 視覺化與快取邏輯。
本次的「30 天系列」內容主要是為了幫助初學者能快速理解與實作,
因此在文章中,我刻意將講解與程式結構設計簡化,
以便讀者能夠每天都學會一個主題、循序漸進地完成一個可運作的專案。
實際的完整專案版本,無論在架構分層、非同步處理、錯誤追蹤與資料快取邏輯上,都遠比這 30 天的教學示例更為複雜、模組化與工程化。
如果你對於 開發桌面應用程式(特別是 WPF 架構) 有興趣、
或想更深入了解我實際專案的架構與實作,
歡迎透過社群或私訊與我聯繫。
我樂於與有興趣的開發者交流、討論實作細節與架構設計經驗。
程式語言會變,框架會換,但思維會留。
—— Akito,2025 IT 鐵人賽《30 天快速上手製作 WPF 選股工具》