在編寫將數據從格式A轉換爲格式B的類時,如何避免違反「單一責任原則」? 這類課程改變的原因有兩個,因爲格式A和格式B都可以改變。如何在轉換數據時避免違反SRP
2
A
回答
3
所以,我在這裏是新的,並提出這個警告,我正在提出我的答案。
在我看來,目前爲止人們只能採用像「單一責任原則」這樣的概念。對我而言,變換類的單一職責是管理從一種格式規範到另一種格式規範的數據轉換。一些想法:
在嚴格的條款,如果該格式的變化之一,你理論上仍然需要格式轉換器的先前版本的轉換原有DAT(向後兼容)。你永遠不知道什麼時候有人可能不會收到關於格式變化的備忘錄。或者你可能遇到地下室某處某種格式的A v1格式的數據。因此,班級的單一責任仍然是將數據從格式A1.0轉換爲格式b1.0。
如果其中一個規格改變了,您現在必須創建一個新的VERSION類,對吧?假設某人修改了格式A的規範。現在您需要一個類來管理從格式A1.1到B1.0的數據轉換。您已經創建了一個負責一個新課程。
雖然在項目的範圍,你可以不考慮需要向後兼容性的要求,在SRP概念而言,我的理解是,在一個或兩個的格式規範的變化要求定義一個新的階級,而不是從流行病學理論的最嚴格的角度來看,暗示着不止一項責任。最後,如果您將數據從一種格式映射到另一種格式作爲該類的單一責任,那麼對於其規範的改變仍然只需要改變該類的單個作業。
舉例說明的最後一個例子。假設我班的責任是將特定的紅色變成特定的粉紅色。然後有一天,首席設計師決定他想要一個更亮的粉紅色作爲輸出,我的規格的一面已經改變,但我班的責任卻沒有。第二天,在最高企業層面決定,新的紅色標準更像栗色。現在我的輸入規範已經發生了變化,但我的班級的職責卻沒有。我可能會決定創建一個新類,並保留版本1.0的持久性,或者我可能只更新現有版本。在任何一種情況下,班級仍然有單一的責任;將紅色規格映射到粉紅色規格。
相關問題
- 1. 避免LSP(Liskov替換原則)違反
- 2. DbFunctions類是否違反SRP
- 3. 如何避免使用休眠時違反唯一約束?
- 4. ToString()方法是否違反SRP?
- 5. 裝飾者模式是否違反SRP?
- 6. 避免TSQL數據轉換錯誤
- 7. 如何避免PMD CloseResource違規?
- 8. 如何轉換避免System.FormatException的數據類型?
- 9. Python:如何避免循環轉換爲熊貓數據框?
- 10. XSLT 1.0:如何避免ascii轉換?
- 11. 避免違約的警告
- 12. 如何避免數據庫
- 13. 如何避免在rails中自動轉換時間?
- 14. 如何在將NSString轉換爲NSDates時避免語言問題?
- 15. 如何在R中避免反斜槓?
- 16. JSON - 避免UNICODE轉換
- 17. 如何避免轉換函數中的複製構造函數?
- 18. 我的功能是否違反SRP或其他最佳做法?
- 19. 服務層類是否違反SRP原則?
- 20. string.IsNullOrEmpty(myString)或string.IsNullOrWhiteSpace(myString)是否違反SRP規則?
- 21. 如何使用Laravel雄辯避免「重複鍵值違反唯一約束」?
- 22. 避免在QGraphicsView上自動轉換QGraphicsScene
- 23. MySQL的:如何轉換爲整數,同時避免了非數字值
- 24. 避免在片段旋轉過程中耗時加載數據
- 25. Java多態:如何避免類型轉換輸入參數?
- 26. 如何避免反應縮小警告
- 27. 優化數據轉換程序以避免內存錯誤
- 28. 使用對象類型來避免數據轉換
- 29. 如何避免在Safari中換行?
- 30. 如何在使用Pandas數據框時避免():循環緩慢?