<分区>
如标题所述,为什么任何对象都应继承 ToString() 方法(例如在 C# 或 Java 中)并以某种方式关心将其转换为字符串?在某些情况下,这不是违反了单一职责原则吗?我的意思是,如果您的对象不需要转换为字符串,您最终会为您的对象承担更多责任。
<分区>
如标题所述,为什么任何对象都应继承 ToString() 方法(例如在 C# 或 Java 中)并以某种方式关心将其转换为字符串?在某些情况下,这不是违反了单一职责原则吗?我的意思是,如果您的对象不需要转换为字符串,您最终会为您的对象承担更多责任。
最佳答案
从某种意义上说,ToString()
确实违反了单一职责原则。转换为字符串表示形式不应该必然是每个对象类型的要求。在 C# 中,GetHashCode()
可以说更糟糕 - 并且再次定义在每种类型上。这可以通过其他一些机制轻松完成(即:一个可选的接口(interface),以及一个负责将任何对象转换为字符串的类,等等)。
这是一个实用性与正确性的问题。在每个提供字符串表示的对象上都有一个方法(可以说)使一些事情总体上更简单,但代价是让每个对象都实现它。也就是说,如果对象对默认实现感到满意,则不需要承担此责任。
关于c# - ToString() 方法是否违反 SRP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362545/