幾個規范:
- 單元測試設計
- DTO 命名
- Web API 命名
- 待補充...
1. 單元測試設計
可以參考微軟開源項目的單元測試,地址:https://github.com/aspnet
首先是單元測試項目創建,我們一般會對各個類庫項目進行單元測試,比如 Application、Repository 等等,我們是創建一個單元測試項目呢?還是多個呢?看下 EntityFramework 中的 Test 項目:
一般情況下,單元測試項目一一對應于要測試的項目,比如 EntityFramework.Core 對應于 EntityFramework.Core.Tests,還有一種創建方式是,整個解決方案只有一個單元測試項目,比如 EntityFramework.Tests,然后針對各個項目的測試用文件夾進行歸類,哪種創建方式更好呢?簡單總結下:
- 一一對應方式:隔離性更好,單個類庫測試運行更加輕快,壞處就是,解決方案項目越多的話,測試項目也就越多。
- 大一統方式:一個測試項目對應多個類庫項目,減少不必要的測試項目創建,壞處就是,解決方案項目越多的話,測試代碼文件或目錄會更加混亂,并且 packages 包會巨大。
我個人覺得,還是一一對應的方式比較好,畢竟一個測試項目的大小空間,并不是什么問題。
除去單元測試項目的創建,還有就是一些命名規范,大致總結下:
- 測試項目命名:一般是在要測試類庫項目的后面,加上 Tests,比如 EntityFramework.Core.Tests。
- 測試代碼文件命名:一般是在要測試類的后面,加上 Test,比如 DbContextTest。
- 測試方法命名:下面詳細說下這個。
關于測試方法的命名,在微軟開源項目里是“五花八門”,我隨便整幾個:
- Microsoft.Data.Entity.Tests.DbContextTest.Each_context_gets_new_scoped_services()
- Microsoft.AspNet.Mvc.Core.Test.ActionExecutorTest.AsyncAction_TaskReturnType()
- Microsoft.Dnx.Runtime.Tests.ApplicationEnvironmentFactsTest.GetDataReturnsNullForNonExistantKey()
- Microsoft.AspNet.Http.Tests.FormFeatureTest.ReadFormAsync_SimpleData_ReturnsParsedFormCollection()
- ...
哪種命名方式會比較好呢?其實沒有準確的答案,但可以肯定的是,一種測試方法命名方式,在一個解決方案中必須是統一的,測試方法命名最重要的目的是,更好的表達這個測試方法要干什么,并且測試方法名稱是給開發人員看的,如果你看一個測試方法名稱,就知道它干的什么事,那么這種測試命名方式就是好的,如果團隊協作開發一個項目的話,團隊之間最好要統一起來,我個人比較傾向于上面第四種。
2. DTO 命名
DTO(Data Transfer Objects)-數據傳輸對象,有關 DTO 的項目及類,該如何命名呢?可以參考這篇博文:Create Data Transfer Objects (DTOs)
簡單總結下:
- DTO 項目命名:Sample.App.DTOs
- DTO 類命名:BlogDTO
問題就是 DTO 單詞是否大小寫,還有就是最后的 s,以此類推,那什么情況下要加 s 呢?比如 Services、Interfaces、Controllers、Models 等等,這類項目的共同點就是,項目下面是相似類的集合,和這種情況不同的是,比如這個項目 Sample.App.Infrastructure,就沒有 s。
3. Web API 命名
Web API 全稱 ASP.NET Web API,Web 的項目可以命名為 Sample.App.Web,Web API 的項目改如何命名呢?三種方式:
- Sample.App.WebApi
- Sample.App.WebAPI
- Sample.App.Web.API
哪種方式比較好呢?暫時沒有 Google 到示例,不過,我個人傾向于第二種。
文章列表