在编写将数据从格式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数据框时避免():循环缓慢?