文章出處

幾個規范:

  1. 單元測試設計
  2. DTO 命名
  3. Web API 命名
  4. 待補充...

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 到示例,不過,我個人傾向于第二種。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()