30 篇文章
在 Video Coding 興起的時候,社群上大概都有一個共同的焦慮:AI 會不會取代我們? Kent Beck 透過與他的 AI (genie) 實作一個高效能的 B+ Tree Library 專案,得到的心得是...
一個分散式鎖的解法, 使用 K8s Leader Election
身為後端工程師,或多或少我們都有遇過**併發**的情境,舉個例子: 訂票、交易等等。 我們都明白在多執行緒環境下確保資源的同步存取是重要的事情。 任何對共享資源的誤判都可能導致資料錯亂、系統崩潰等後果。今天就來聊聊三種關鍵的同步機制:lock、Mutex 和 SemaphoreSlim。
這是一個吃飯閒聊間得到一個啟發,不如你也點一份牛排吧
這篇文章介紹了使用 Fody 框架來實作 AOP(面向切面程式設計)的實務經驗。從實際工作需求出發,詳細說明了 AOP 的核心概念:把跟業務邏輯沒有直接關係、但又不可缺少的橫切關注點(像是日誌記錄、身份驗證、效能監控等等)從主要的業務程式碼中抽離出來處理
以實務經驗來探討如何解決傳統三層架構的耦合問題,深入分析 Repository 模式的重新設計,以及 Entity 到 Domain 轉換邏輯的關鍵作用。說明單元測試如何推動架構向六角架構自然演進,實現更好的關注點分離和系統可維護性。
在 C# 單元測試中,如何驗證多次呼叫的情況?本文提供了一個實際範例,展示如何使用 NSubstitute 和 FluentAssertions 來驗證多次呼叫的參數。
服務導向架構 (SOA) 是一種設計方法,將應用程式功能以服務的形式提供,讓這些服務可以被其他應用程式使用。本文介紹 SOA 的核心概念、設計原則、特性、優點和挑戰,以及與微服務架構的比較。
安安,今年的鐵人賽,我想寫幾篇文章來說明TDD 這件事情,且用 TDD KATA 來入門 Golang 並在最後探索出如何和AI一起做TDD。
在 Day 2,我們將為 Golang TDD 實戰做好準備,搭建開發環境,安裝 Go 語言、VS Code 編輯器及必要的擴充套件,並撰寫第一個測試來驗證環境是否就緒。
在 Day 3,我們將深入 Golang 語法,學習如何設計「可測試」的程式碼。重點包括函式、結構與介面的使用,並透過實際範例來理解它們在 TDD 中的重要性。
在 Day 4,我們將深入 Golang 的測試框架,學習如何撰寫測試檔案 `_test.go`,並使用 `go test` 指令來執行和管理測試。掌握這些基礎後,我們就能開始實踐 TDD 循環了!
在 Day 5,我們將學習如何使用 Go 的測試套件和第三方庫 stretchr/testify 來撰寫更優雅的斷言 (Assertion)。掌握這些工具後,我們的測試程式碼將變得更清晰、更易讀,並能更好地表達我們的意圖。
在 Day 6,我們將深入 Golang 的表格驅動測試 (Table Driven Tests) 慣用法,學習如何使用表格來組織測試案例,讓測試程式碼更清晰、易於擴充。掌握這個模式後,你將能夠以最優雅的方式撰寫測試,並輕鬆應對各種情境。
在 Day 7,我們將學習如何處理測試中的外部依賴,使用 Mock 和 Stub 來隔離測試環境,確保我們的單元測試能夠專注於商業邏輯,而不受外部因素影響。掌握這些技巧後,你將能夠撰寫更穩定、更可靠的測試案例。
在 Day 8,我們將建立一個結構清晰、可擴充的 Go Modules 專案,為我們的 TDD Kata 練習做好準備。這個專案將成為我們未來所有 Kata 練習的家。
在 Day 9,我們將正式開始我們的第一個 TDD Kata 練習。我們將完全遵循 TDD 的節奏,從最小的需求出發,為 FizzBuzz 問題寫下第一個「注定會失敗」的測試。
在 Day 10,我們將完成我們的第一個 TDD 循環,從紅燈到綠燈,並進行必要的重構。這是 TDD 的核心實踐,讓我們的程式碼在測試的保護下逐步成長。
這篇文章延續前面的 FizzBuzz 練習,展示了如何透過多個完整的 TDD 循環,逐步實現所有 FizzBuzz 邏輯
這篇文章引入了更具挑戰性的 TDD Kata,模擬真實軟體開發中的需求演進
這篇文章實作字串計算機的前兩個基本功能,展現了紮實的 TDD 基礎
這篇文章讓字串計算機真正開始「計算」,處理多個數字的相加
不寫任何程式碼,而是進行一次深度的復盤與問答,我們到底從手動 TDD Kata 中學到了什麼?
從 TDD 的熱情中抽離,以一種務實、客觀的態度,探討 TDD 的限制與權衡,學會做出明智的技術決策。
正式邀請我們的 AI 隊友——GitHub Copilot——加入專案,並為我們的人機協作搭建好舞台。
掌握 TDD 流程中的「AI 詠唱術」(Prompt Engineering),並透過一個全新的微型 Kata,完整地演練一次從需求發想到開發完成的 AI 協作 TDD 流程。
學習如何利用 AI,來強化我們 TDD 循環中的「重構」與「測試完備性」。
進行一次迄今為止最真實的 AI TDD 實戰演練!我們將使用流行的 Gin 框架,從零開始,完整地開發一個簡單的 HTTP API 端點。
學習如何利用 AI 的窮舉能力,扮演我們的「對抗性陪練」,幫助我們找到並測試那些容易被忽略的邊界條件。
學習如何利用 AI,幫助我們輕鬆地編寫併發測試,並使用 TDD 的方式,來修復併發場景下的競爭條件 Bug。
學習一項能在遺留程式碼的泥潭中殺出重圍的關鍵技能——編寫「特性測試」(Characterization Tests),並利用 AI 來極大地加速這個「程式碼考古」的過程。
將我們的視角從 開發維度 提升到 業務維度,引入 TDD 的近親——驗收測試驅動開發 (ATDD),並學習一種能讓業務、QA 和開發者都能溝通的「共同語言」。
完成 ATDD 的後半部分,將業務描述與真實的程式碼邏輯連接起來,並點亮最終的綠燈!
為「購物車折扣」功能,完成 ATDD 的前半部分工作 —— 定義需求,並讓 godog 引導我們下一步該做什麼。
跳出程式碼,從一個行業參與者的角度,探討在專業開發中使用 AI 時,我們必須面對的幾個關鍵議題。
以第一人稱的視角,體驗一位開發者在 AI 協作模式下,高效、穩健地度過一個典型的工作日 (大家就當看故事就好)。
最基本的問題開始:「到底什麼是測試驅動開發?」
沒有找到符合的文章
試試其他關鍵字