C# 有個著名的 using
statement,對於實踐 IDisposable
的物件特別好用,但 using
是個 statement,在 Imperative 世界沒問題,但在 Functional 世界,statement 就類似 句點
,讓我們無法繼續 Pipeline 或對其他 function 做 Compose,我們能否比照將 foreach
statement 重構成 ForEach()
function,也將 using
statement 重構成 using()
function 呢 ?
點燈坊
Higher Order Function (HOF) 可以說是 FP 的精華,就算是目前主流 OOP,也大都接受了 HOF 概念,但實務上要活用 HOF 並不容易,需要時間與訓練,本文整理出實務上最常使用 HOF 的 4 種 Pattern,讓大家更容易運用在日常開發中。
Haskell 是個非常純的 FP 語言,如所有 data 都是 Immutable,所有 function 都是 Lazy Evaluation,這些觀念都是一般程式語言所沒有的,透過 Haskell,可以讓我們學習更純的 FP 概念,而不是 workaround 式的 FP,進而改變思考方式。
Haskell IDE Engine 是基於 LSP (Language Service Protocol),讓我們在 VS Code 就可以享受如 IDE 強大功能。
這幾年由於 Reactive Programming 興起,使得 FP 這古老的 Programming Paradigm 又成為顯學,FP 大都使用 JavaScript、Haskell … 等偏 FP 語言闡述,很少人使用 C# 來談 FP,本系列將使用大家的老朋友 C#,帶領大家一步一步進入 FP 世界。
SonarQube 除了能檢查 C# 品質外,還可以當成 dashboard 使用,讓整個團隊有統一入口關注專案的 Code Coverage。
SonarQube 支援 OpenCover 與 dotCover 兩種格式,本文將以 NUnit + Coverlet + OpenCover 介紹。
在實務上不少資訊我們不想寫死在 code 中,會以 config 形式由 client 設定,目前最主流的 config 就屬 JSON 格式,.NET 也提供了 ConfigurationBuilder
,讓我們輕易的讀取 JSON 格式的 config 檔。
SonarQube 是一套 程式碼品質檢查工具
,可以幫我們檢查 C# 的 bugs、 vulenrability、code smell 與 duplication。
本文使用 Docker Compose,並同時啟動 .NET Core 與 SonarQube 兩個 container,自動對 .NET 專案進行檢查。
雖然平時以 macOS 作為開發主力,偶爾還是會需要在 Parallel Desktop 使用 Windows,此時若要使用 Docker,雖然也能在 Parallel Destop 內跑 Docker for Windows,不過由於是 VM 中的 VM,Docker 並不穩定,比較建議的方式是 Windows 搭配 Docker for Mac 使用。
當 Chrome 在 68 版後會將沒有 https 網站標上 不安全
字樣,讓 blog 升級成 https 已經不能避免的課題,若你是使用 Hexo 且放在 GitHub,則可參考本文的方式。