Lynn Study Notes

.NET Developer, Open Source Enthusiast

回顧 2023

2023居然沒有紀錄一些年度目標之類的,不知道是不是因為無暇顧及,總之2024年就要好好紀錄一下了。


.NET MS Unit Test

平常工作上的測試框架都是使用xunit,但 .NET自己其實就有測試框架,而且在Vistual Studio的整合度也是最高的,所以我自己私心喜歡MS Test,而Test Deiver的框架,我覺得依照個人喜好,例如BDD的的優點是讓測試敘述易讀,可以讓後續維護方便和非開發人員也能看懂測試案例,但以自己隨便寫的小專案來說,我覺得不需要用到這麼大的陣仗,測試只要包含核心邏輯即可,所以趁著有一點時間來練習一下怎麼使用MS Test。


.NET Queue的進化之路 Channels

以往我們比較熟悉的是Queue和ConcurrentQueue,偶爾也會看到BlockingCollection,Queue的主要概念就是先進先出的原則,舊有的Queue基本的方法就是EnqueueDequeuePeek,但不是Thread safe的,而ConcurrentQueue雖然是Thread safe,但卻不能限制Queue的長度大小,而最新的BlockingCollection雖然可以限制長度了,但相比之下少了Async的支援和一些靈活性,以下是整理比較。


.NET docker image選擇與自訂 Image

容器化已經慢慢變一個趨勢了(當然還有更潮的ServerLess),聽到的大部分公司不是正在前往容器化的路上就是已經完成容器化,甚至Dotnet在建立專案的時候都可以直接建立Dockfile,執行的時候也可以直接用docker container的方式執行,簡直有夠完美,但假設接下來會需要整合自己的CI/CD流程,這個時候就很需要自定義dockerfile了。


使用Sonarqube和SonsarLint幫程式碼分析品質

SonarQube 是一套開源的程式碼品質的管理分析系統,可以拿來檢查程式碼的錯誤、漏洞或是Code smell,支援了超級多的語言和IDE,還可以搭配CI/CD工具去做一些自動化掃描,例如在Jenkins / Github Action / Azure DevOps等等,有些高級的服務雖然要錢,例如說程式碼品質要過才能Merge回去、產生報告等等,但基本的分析其實就已經很實用了。

在每次的CI/CD掃描是很方便的事,但一個團隊一天PR不知道有多少,這樣掃描修改掃描的過程還是蠻花時間的,所以有了SonarLint這工具,可以直接在客戶端使用並掃描當前的程式碼,大大減少了在CICD掃描的過程。