Pragmatic TDD: 以DDD寫出鬆散耦合、文件化和高品質的程式碼

Pragmatic TDD: 以DDD寫出鬆散耦合、文件化和高品質的程式碼

Pragmatic Test-Driven Development in C# and .NET

出版日期:
2023/09/05
9
720648
查詢門市庫存
Pragmatic TDD:以DDD寫出鬆散耦合、文件化和高品質的程式碼
Pragmatic Test-Driven Development in C# and .NET

內容簡介

Pragmatic TDD:以DDD寫出鬆散耦合、文件化和高品質的程式碼
Pragmatic Test-Driven Development in C# and .NET

使用C#和.NET的工具與函式庫

測試驅動開發(TDD)是一種宣言(manifesto),強調在逐步為產品增加功能時,你應該先從單元測試(unit test)開始。現今的專案範本(project template)預設都含有單元測試,而單元測試已成為預期會被實作的重要任務。因此,在許多職位需求中,你會毫不意外地看到TDD、單元測試等關鍵字,而TDD和單元測試亦成為面試、coding挑戰和程式競賽中的重要考題。採用TDD,不僅能強化良好的設計實踐,更能加速你提升技能,成為優秀程式設計架構師(coding architect)。

本書超越理論探討,專注於讓你透過實用的框架,如ASP.NET Core和Entity Framework,在實際環境中熟練應用TDD。從基礎知識開始,本書將指導你使用Visual Studio 2022建立一個服務預訂的網頁應用程式。為了更貼近真實的工作情境,你將使用EF、SQL Server和Cosmos,並運用各種設計模式,包括資源庫(repository)、服務(service)、建造者(builder)等。同時,本書也會介紹領域驅動設計(DDD),以及其他軟體設計最佳實踐,如SOLID和FIRSTHAND等。

讀完本書,你將建立足夠的信心來主導TDD的實作。此外,你也將掌握有力的商業和技術案例,可在向管理階層或同事展示單元測試或推動TDD時使用。藉由本書的指引,你將更有把握成為引領TDD實踐的領航者,並在軟體設計領域中脫穎而出。

✍本書特色✍
★使用xUnit編寫單元測試,並掌握相依注入的技巧
★使用NSubstitute實作測試替身,並進行mocking(模擬化)
★結合DDD與最佳實踐,以TDD的風格撰寫單元測試
★將TDD與ASP.NET API、Entity Framework和資料庫結合使用
★透過探索GitHub的持續整合更上一層樓
★探索更進階的mocking使用情境
★在你的公司和團隊中積極推動TDD和單元測試

✍目標讀者✍
本書適合那些希望借助TDD的力量,來開發高品質軟體的中高階.NET開發者。假設你已經掌握OOP(物件導向程式設計)及C#程式設計概念的基礎知識,可是你對TDD或單元測試並不了解,本書將深入介紹並探討所有TDD與單元測試的觀念。對於想要從頭開始建置以TDD為基礎的應用程式,或計畫要在自己的組織內部引入單元測試的開發者來說,本書會是非常實用的指南。


【下載範例程式檔案】
你可以從GitHub下載本書的範例程式碼,如果程式碼有更新,作者也會直接更新在儲存庫上:
https://github.com/PacktPublishing/Pragmatic-Test-Driven-Development-in-C-Sharp-and-.NET

【下載本書的彩色圖片】
本書使用的彩色截圖和圖表,可以在此下載PDF檔案:
https://packt.link/OzRlM

展開看更多

產品目錄

Part 1:TDD的基礎入門
Chapter 01:撰寫你的第一個TDD實作
Chapter 02:藉由實際例子了解相依注入
Chapter 03:單元測試入門
Chapter 04:實際在單元測試中使用測試替身
Chapter 05:解說測試驅動開發
Chapter 06:TDD的FIRSTHAND準則

Part 2:使用TDD建立應用程式
Chapter 07:領域驅動設計的實務觀點
Chapter 08:設計一個服務預訂應用程式
Chapter 09:使用Entity Framework和關聯式資料庫建置服務預訂應用程式
Chapter 10:使用資源庫和文件式資料庫建置服務預訂應用程式

Part 3:將TDD應用於你的專案
Chapter 11:使用GitHub Actions實作持續整合
Chapter 12:處理棕地專案
Chapter 13:推行TDD的紛雜繁擾之處

Appendix A:單元測試相關的常用函式庫
Appendix B:進階的Mocking使用情境

作者介紹

✍作者簡介✍
Adam Tibi是一位居住在倫敦的軟體顧問,他在.NET、Python、Microsoft產品方案(技術堆疊)以及Azure等領域,擁有超過22年的豐富經歷。此外,他在團隊指導、架構設計、推廣敏捷以及良好的軟體開發實踐,當然還有寫程式等方面,也有深厚造詣。他曾在Shell、Lloyds Bank、Lloyd's of London、Willis Towers Watson等藍籌公司(blue-chip firm)和多家新創公司擔任顧問。身為一位顧問,他面對多樣化的產業客戶組合,深刻體會到TDD的紛亂難懂之處,他把這些寶貴的知識和經驗融入到了這本著作當中。

✍譯者簡介✍
莊志弘是「軟體主廚的程式料理廚房」部落格(https://dotblogs.com.tw/supershowwei)及「軟體廚房」粉絲團(https://www.facebook.com/appcookhouse)的經營者,至今(2023年)連續七次當選微軟最有價值專家。軟體開發的生涯從.NET 1.1開始,在.NET生態圈的開發經驗將近20年,曾經服務於國際貿易、系統整合、傳播媒體、投資顧問等行業。2021年創辦了「主廚的軟體廚房有限公司」,提供軟體專案開發、顧問等服務,懷抱著為各種問題找出 Best Practice 的夢想持續地在IT這條路上摸索著,同時也是敏捷開發的信仰者。

規格

誠品貨碼 / 2682435002002
ISBN13 / 9786263335707
ISBN10 /
EAN貨碼 / 9786263335707
頁數 / 392
裝訂 / P:平裝
語言 / 1:中文/繁體
尺寸 / 17x23x2.1
級別 / N:無

退貨說明

退貨須知:

  1. 依照消費者保護法的規定,您享有商品貨到次日起七天猶豫期(含例假日)的權益(請注意!猶豫期非試用期),辦理退貨之商品必須是全新狀態(不得有刮傷、破損、受潮)且需完整(包含全部商品、配件、原廠內外包裝、贈品及所有附隨文件或資料的完整性等)。
  2. 請您以送貨廠商使用之包裝紙箱將退貨商品包裝妥當,若原紙箱已遺失,請另使用其他紙箱包覆於商品原廠包裝之外,切勿直接於原廠包裝上黏貼紙張或書寫文字。若原廠包裝損毀將可能被認定為已逾越檢查商品之必要程度,本公司得依毀損程度扣除回復原狀必要費用(整新費)後退費;請您先確認商品正確、外觀可接受,再行拆封,以免影響您的權利;若為產品瑕疵,本公司接受退貨。

依「通訊交易解除權合理例外情事適用準則」,下列商品不適用七日猶豫期,除產品本身有瑕疵外,不接受退貨:

  1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮蔬果、乳製品、冷凍冷藏食材、蛋糕)
  2. 依消費者要求所為之客製化給付。(如:客製印章、鋼筆刻字)
  3. 報紙、期刊或雜誌。
  4. 經消費者拆封之影音商品或電腦軟體。
  5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書)
  6. 已拆封之個人衛生用品。(如:內衣褲、襪類、褲襪、刮鬍刀、除毛刀等貼身用品)
  7. 國際航空客運服務。

若您退貨時有下列情形,可能被認定已逾越檢查商品之必要程度而須負擔為回復原狀必要費用(整新費),或影響您的退貨權利,請您在拆封前決定是否要退貨:

  1. 以數位或電磁紀錄形式儲存或著作權相關之商品(包含但不限於CD、VCD、DVD、電腦軟體等) 包裝已拆封者(除運送用之包裝以外)。
  2. 耗材(包含但不限於墨水匣、碳粉匣、紙張、筆類墨水、清潔劑補充包等)之商品包裝已拆封者(除運送用之包裝以外)。
  3. 衣飾鞋類/寢具/織品(包含但不限於衣褲、鞋子、襪子、泳裝、床單、被套、填充玩具)或之商品缺件(含購買商品、附件、內外包裝、贈品等)或經剪標或下水或商品有不可回復之髒污或磨損痕跡。
  4. 食品、美容/保養用品、內衣褲等消耗性或個人衛生用品、商品銷售頁面上特別載明之商品已拆封者(除運送用之包裝外一切包裝、包括但不限於瓶蓋、封口、封膜等接觸商品內容之包裝部分)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  5. 家電、3C、畫作、電子閱讀器等商品,除商品本身有瑕疵外,退回之商品已拆封(除運送用之包裝外一切包裝、包括但不限於封膜等接觸商品內容之包裝部分、移除封條、拆除吊牌、拆除貼膠或標籤等情形)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  6. 退貨程序請參閱【客服專區→常見問題→誠品線上退貨退款】之說明。
付款/配送