2016-02-19 103 views
1

System.Data.Entity命名空間中有DbFunctions類。它有將近100個處理字符串操作,DateTime計算和統計函數的函數。 SO上有很多SRP問題,所以覺得這是合適的論壇。 Wikipedia定義SRP如下:DbFunctions類是否違反SRP

單責任原則指出每個模塊或 類應該具有超過由軟件提供的功能 單個部分的責任,和責任應該由類完全 包封。它的所有服務都應該狹義地對準 與責任

在我看來,這DbFunctions是一種違法行爲。

定義什麼類的目的是很多人主張統計定義中使用的「ands」的數量。不止一個,你可能違反了SRP。據我統計,DbFunctions至少有3個。我對SRP的理解是否有缺陷或過於直接?我知道總是存在邊緣案例,但在我看來,這似乎違反了SRP。這當然不會削弱班級的超級用途。

這個類是否符合SRP?

+0

Downvote?請......這個問題沒有錯。我已經對這個主題進行了大量的思考和研究,並且正在尋找有意義的迴應。 –

+0

這個問題確實表明了大量的想法和研究,但是你把它發佈在錯誤的網站上。 SO不是針對特定的編程問題,這不是。 –

+1

@MadPhysicist ...我在哪裏發表了各種各樣的情緒。對此,有很多基於意見的SRP問題 - 這就是我選擇在這裏發佈的原因。真的,大多數與實體有關的東西都是基於意見的,並且在這個主題上有很多SO帖子。如果SO管理員不同意我的觀點,有人可以遷移到相應的論壇嗎? –

回答

1

我不認爲它違反了SRP。以下是MSDN中給出的定義:

提供公共語言運行庫(CLR)方法,該方法公開用於DbContext或ObjectContext LINQ to Entities查詢的EDM規範函數。

上述定義中的責任是將EDM Canonical函數公開在Linq To SQL查詢中使用,這是單一責任。

+1

那些暴露「相關」功能的熟悉的「經理」類怎麼樣?相關確定,SRP通常不是。 –

+0

爲什麼你認爲'SOLID'是一個神奇的子彈,所有的軟件都應該以100%的合規性來構建?忽略那只是因爲你沒有看到關係並不意味着它不存在。 –

+1

@MatthewWhited ...我沒有透露任何關於100%合規性或SOLID是神奇的子彈。我只是質疑我的理解,還有一些我認爲是SRP。 –