C# 3 的 Extension Method 是很了不起的發明,讓我們在不修改原本 source code 的前提下,就能為 class 增加新 method,實現開放封閉原則,尤其對於 .NET Framework 或 package 的擴展特別有效。
事實上 Extension Method 在 Functional Programming 下另有妙用,讓我們輕易實現 Function Composition。
C# 3 的 Extension Method 是很了不起的發明,讓我們在不修改原本 source code 的前提下,就能為 class 增加新 method,實現開放封閉原則,尤其對於 .NET Framework 或 package 的擴展特別有效。
事實上 Extension Method 在 Functional Programming 下另有妙用,讓我們輕易實現 Function Composition。
Local Function 是 C# 7 支援 FP 的重要功能,除了比 C# 3 的 Func 與 Action 可讀性高,速度也更快,因此建議全面使用 Local Function 取代 Func 與 Action。
透過 Rider,我們也可將 legacy code 快速重構成有 FP 風格的 Local Function。
Vim 是一個歷史悠久的編輯器,完全使用鍵盤操作,就算你使用 IDE,但其 鍵盤操作
的精神卻可以保留下來,讓你在開發時完全不需要摸到滑鼠與觸控板,而使用鍵盤全速開發。
在 Rider 只要安裝以下三個套件,就能順利在 Rider 使用 Vim,也適用於其他 JetBrains 產品。
在 單元測試的藝術
一書中,使用的是 NUnit
與 NSubstitute
,但 .NET Core SDK 預設只提供 MSTest
與 xUnit
,該如何在 .NET Core 使用我們熟悉的 NUnit
與 NSubstitute
呢 ?
在實務上常會發現一些 parameter 總是以 primitive type 一起出現,導致 method 內的 parameter 個數過多,也就是 Code Smell 所謂的 Primitive Obsession
,解決方式是將這些 parameter 抽成 class,這在 Refactoring 稱為 Introduce Parameter Object
,而在 Rider 則稱為 Transform Parameters
,且實務上常常搭配 Make Method Non-Static
一起重構。
在 .NET Core 使用 CLI 的機會越來越多,因此如何在 Rider 從 Editor 與 Terminal 快速切換,是一個不可逃避的問題,當然可以用滑鼠慢慢的點,但若能完全使用鍵盤操作,整個 workflow 會非常的順。
將設定使用 ⌃ + ~
啟動 Terminal,ESC
離開 Terminal 回 Editor。
傳統都會使用 GUI 工具連上 database,如 DataGrip、SQLPro Studio,若只是想簡單確定資料有沒有寫入成功,簡單的 CLI 工具會更方便,pgcli 就是一套在 CLI 連接 PostgreSQL 的小工具。
當使用 Code First 與 Migration 後,下一步就是 Data Seeding,讓我們對 table 新增基本的資料。在 EF Core 2.0,Data Seeding 只能自己手動處理,在 EF Core 2.1 正式提供 Data Seeding。
透過 PostgreSQL 官方提供的 Npgsql EF Core Provider,Entity Framework Core 也能簡單地存取 PostgreSQL。
本文將使用 Code First 方式對 PostgreSQL 建立 database schema,並解釋 Migration 背後運作原理。
Higher Order Function 是 JavaScript 或 FP 語言常見的語言機制,事實上 C# 也支援某種程度的 FP,如 Func、 Predicate 與 Action。
透過 Rider,我們也能將既有 method 重構出具 FP 風格的 Higher Order Function。