[範本] 一個最基本的 C#.NET 單元測試程式碼骨架 for VS.NET 2015

所謂的單位測試框架 (Unit Test Framework),其作用在於讓開發人員可以輕易地撰寫以「類 (Class)」為單位的測試程式,並隨時可以執行自動化的重複性測試 (automation repeatable test),以確保該單一類別的正確性。

單位測試的創始者為 Kent Beck,其理論與方法已被各程式開發語言所接受並多以開源方式 (Open Source)釋出,作為xUnit家族的單元測試框架 (unit test framework)。

多數測試框架 (如 MSTest, Junit)已直接內建於 IDE (如 VS.NET 2015, Eclipse)開發環境內,使得開發人員撰寫與執行單元性的測試程式是一件輕易的工作;自 Visual Studio 2015,尤以免費釋出的 Visual Studio Community 2015 版本,均已內建更具多功能、擴展性佳的單元測試機制。

透過 Unit Test Generator,可以:

  • 支援內建 ( MSTest)與 3rd Party (NUnit, XUnit)測試框架 (Test Framework)。
  • 依據測試框架產出對應的單元測試專案與測試程式碼骨架 (skeleton)。
  • Test Explorer 可以支援任一測試框架,只要有實現 (implement) Test Explorer Adatper 介面,如此得以執行任一測試框架所撰寫的測試程式。

底下即為個人利用內建的 MSTest 測試框架 (Test Framework)所撰寫的最基本的測試程式碼骨架 (skeleton),參考如下:

繼續閱讀 »

開源免費下載-完整設計模式 (design patterns) 程式碼(C#.NET)/UML Model 檔

關於爾後我們 HSDc. 軟體設計顧問所開設的課程,除了教材內容尚無開放以外,其它包括完整可執行的程式碼、UML Model 檔,均以開源方式 (open source)免費供下載。

所有開源文件的釋出 (release),均可以透過加入 FB社團-軟體設計鮮思維 獲取最新的訊息。而所有的程式碼/UML Model,我們則是一律統一放置於 GitHub,當然在 README 文件上我們會附上基本的操作說明。

以後這些開源文件,尤其是案例程式碼,我們均會不定期持續版本更新。讀者可以透過 Git 工具隨時作同步更新。

目前提供了兩份開源文件:

另外補充關於上述設計模式 (Design Patterns)案例的說明。

在 C#.NET 程式碼部分 (Java/Spring 版本後續會另行公布),包含了完整 23 個設計模式範例;而關於 UML Model,則還增加了以周遭生活案例的塑模 (modeling),讓每一個設計模式的目的更容易理解。

關於 C#.NET 程式碼的結構部分,主要分為兩個專案 (project):一為 Web MVC by ASP.NET;另一為 Control by POCO (plain-old CLR objects)。

關於本案例的設計模式物件分層結構,可以參考下圖:

圖、圖、設計模式的物件分層結構

圖、設計模式的物件分層結構

繼續閱讀 »

程式設計的招式對打練習方案-Kata

「The Clean Coder (有中譯版)」一書內所提及的「程式設計柔道場 (Coding Dojo)」的理念很有意思:

「把每一段可用來模擬程式設計問題內的解決過程案例 (case study)稱為 Kata (對打),其最終目標就是在不斷的練習當中以達純熟的直覺反應式寫碼動作。」

每一個 Kata 都必須伴隨著 TDD (Test Driven Development)、亦即測試先行的反覆測試建置。

有個 Uncle Bob (Clean Coder 原作者)提供最經典的範例:「保齡球 (The Bowling Game)」,這個練習約約要 30 分鐘 (我是不太相信這麼短 !^^),在測試階段會經歷衝突,而後在建置階段達到高潮。

我這裡提供下所查詢到的一些討論 Kata 的文章與範例:
o http://katas.softwarecraftsmanship.org/
o http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata
o http://www.peterprovost.org/blog/2012/05/02/kata-the-only-way-to-learn-tdd/

爾後個人的實戰案例,例如「烏龜販售系統」,也打算以開源 (open-source)、簡單設計 (simple design)並整理成 Kata 的範例供學員們練習。藉此從其中學習到 Enterprise MVC、Service-Oriented、TDDRe-factoring 等觀念,透過草稿式的設計與直接程式寫碼階段來理解與應用。

[交易系統] C#.NET 開發海外期貨部位策略管理系統

這是兩三個月前,某大戶所委託開發關於海外期貨的部位策略管理系統。先前有徵詢過該大戶的同意,得以分享該系統的功用與開發概要。

該大戶係以 MultiCharts 作為報價與策略設計的平台,然後再以自行開發輸出文字檔的 DLL 元件,並搭以自動下單系統,而構成全自動化的程式交易系統。

由於管理的海期商品多達上百種,且運作的帳戶亦多達數十個,資金操作已達一定的規模。有感於資金部位的風險管理有其必要,故把他關於資金部位的策略邏輯,並需要整合現在運作的自動下單,寫成一份需求委託文件,以及一些測試的案例與資料供開發上的參考。

我使用了 UML 元件圖 (Component Diagram),先大致表達出整個海期交易系統的架構 (architecture):

海期自動化交易系統架構圖

圖、海期自動化交易系統架構圖

原來的交易系統係以無窮迴圈的處理方式來持續輸出所監控商品的報價文字檔,使用相當簡單的程序以代表 Tick 的跳動;然後自動下單系統再去讀取所有商品文字檔 (仍以無窮迴圈方式),並判斷商品的部位數量有無變化情形,再決定是否傳送至券商的下單系統。

「海期部位策略管理系統」從功能區分大致上區分有三個模組:商品即時監控、專案帳戶資金管理、判斷帳戶所持有部位 (新增/輸出)的邏輯處理

圖、海期資金部位策略管理系統 by C#.NET

圖、海期資金部位策略管理系統 by C#.NET

繼續閱讀 »

[實作筆記] Visual Studio 2012 新增 MVC 5 Project

Visual Studio 2012 系列並沒有支援 ASP.NET MVC 5 的專案樣版 (template),目前仍僅提供 MVC 3/4 的樣版。

MVC 5 的新功能 (New Features)可參考:What's New in ASP.NET MVC 5。主要因為 MVC 5 直接支援 Bootstrap 作為 Layout and Theme 的 View Framework;且支持的 Bootstrap 版本為 3.02,而原來支持的 2.x 與 3.x 的 CSS Tag 可說大幅翻修,所以若是開發新的 Web 專案,還是乾脆以 MVC 5 作為樣版較為合適。

如需要讓 Visual 2012 可以使用 MVC 5 的樣版,需要:

不過安裝完成後,雖然可以新增 MVC 5 專案樣版,但卻只能選擇-「ASP.NET MVC 5 Empty Project」樣版,也就是只為空的樣版框架,並沒有像如 MVC 4 可以選擇完整 Web 的框架。

可以參考這一篇-Extended Template for ASP.NET MVC 5 from Visual Studio 2012。下載該篇作者所提供的樣版檔案,並複製至下述目錄 (需依該目錄結構):

%USERPROFILE%\Documents\Visual Studio 2012\Templates\Project Templates\Visual C#\Web

繼續閱讀 »

RogueLike in Linux C++-寫在前頭

我想再利用閒暇時間瞭解下 Linux 的程式開發,以俾得以對 Linux 系統底層有更進一步的應用與控制。因為未來開放式硬體的架構 (ex. Raspberry Pi, BeagleBoard, Cubieboard ...etc),必然是以 Linux 為開源系統,並以此為基準點,建立各類硬體裝置控制的應用。

我偏好採用 C++ 作為 Linux 開發的程式語言,畢竟 Linux 系統底層/服務 大都以 C/C++ (其實還是要當為兩種不同的語言,只是 C++ 可以很容易引用 C 的函式庫。)來開發的。再則:

  • 高移植性:重點在於函式庫的跨平台 (Windows/Linux ...)、跨硬體架構 (Intel/ARM-based CPU)!且太多開源各類的函式庫可資引用,方便太多。
  • High-Performance。
  • 物件化的始祖:畢竟我還是習慣採物件化的思維來設計與開發,具 OOP 的機制還是會比較直覺。

我希望初期先透過一個主題來持續學習與實踐 C++ 的開發 (先不需牽扯到系統底層處)。因為畢竟與工作無關,且是當成休閒嗜好的輕鬆態度學習的;所以我想乾脆就把 RogueLike 遊戲 的程式開發作為學習的標的。

因為我現在也正在玩 DCSS (Dungeon Crawl Stone Soup),而 RogueLike Game 不需著重在畫面音效等,僅需利用 ASCII 字符的格狀畫面來呈現即可,所以就不用考量到畫面效果的處理技術。另外一點很重要的是,大部分的 RogueLike 遊戲係以 Open-Source 連原始程式碼都免費釋出,還有許多教學資源可供充分的研究與學習。

我就打算以這一系列-Complete roguelike tutorial using C++ and libtcod,作為我學習以 Linux C++ 開發 RogueLike 遊戲的教案,然後逐步的把心得筆記下來。

總之,我是打算抱著很輕鬆的態度來學習 Linux C++ 的,應該是會視之為 long-term 的學習歷程。

繼續閱讀 »

第 1 頁 / 共 245 頁123456789101112...203040...最後一頁 »