關於項目架構設計的一些規範

幾個規範:git

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

1. 單元測試設計

能夠參考微軟開源項目的單元測試,地址:https://github.com/aspnetgithub

首先是單元測試項目建立,咱們通常會對各個類庫項目進行單元測試,好比 Application、Repository 等等,咱們是建立一個單元測試項目呢?仍是多個呢?看下 EntityFramework 中的 Test 項目:web

通常狀況下,單元測試項目一一對應於要測試的項目,好比 EntityFramework.Core 對應於 EntityFramework.Core.Tests,還有一種建立方式是,整個解決方案只有一個單元測試項目,好比 EntityFramework.Tests,而後針對各個項目的測試用文件夾進行歸類,哪一種建立方式更好呢?簡單總結下:api

  • 一一對應方式:隔離性更好,單個類庫測試運行更加輕快,壞處就是,解決方案項目越多的話,測試項目也就越多。
  • 大一統方式:一個測試項目對應多個類庫項目,減小沒必要要的測試項目建立,壞處就是,解決方案項目越多的話,測試代碼文件或目錄會更加混亂,而且 packages 包會巨大。

我我的以爲,仍是一一對應的方式比較好,畢竟一個測試項目的大小空間,並非什麼問題。asp.net

除去單元測試項目的建立,還有就是一些命名規範,大體總結下:單元測試

  • 測試項目命名:通常是在要測試類庫項目的後面,加上 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()
  • ...

哪一種命名方式會比較好呢?其實沒有準確的答案,但能夠確定的是,一種測試方法命名方式,在一個解決方案中必須是統一的,測試方法命名最重要的目的是,更好的表達這個測試方法要幹什麼,而且測試方法名稱是給開發人員看的,若是你看一個測試方法名稱,就知道它乾的什麼事,那麼這種測試命名方式就是好的,若是團隊協做開發一個項目的話,團隊之間最好要統一塊兒來,我我的比較傾向於上面第四種。.net

2. DTO 命名

DTO(Data Transfer Objects)-數據傳輸對象,有關 DTO 的項目及類,該如何命名呢?能夠參考這篇博文:Create Data Transfer Objects (DTOs)設計

簡單總結下:orm

  • 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 到示例,不過,我我的傾向於第二種。

相關文章
相關標籤/搜索