我目前正试图通过阅读一本叫做Practical Object Oriented Design in Ruby
的书来理解这些坚实的原则。第一个原则是单一责任,我理解这个概念的方式是,一个类/方法应该只有一个责任或理由来改变。
在下面的代码中,我有一个calculate类,负责(4)四个不同的操作,add
,subtract
,multiply
和divide
,这对我来说不符合单一责任理论。
有人能如此和蔼可亲地重构以下类,使其遵循Single Responsibility
?
我知道这可能是一个非常固执己见的话题,但我真的需要更好地理解这个概念。
仅供参考-为了简单起见,我只使用整数,我知道它不适合于除法和减法。
class Calculate{
let num1:Int
let num2:Int
init(firstNum:Int, secondNum:Int){
num1 = firstNum
num2 = secondNum
}
func add()->Int{
let total = num1 + num2
return total
}
func subtract()->Int{
let total = num1 - num2
return total
}
func multiply()->Int{
let total = num1 + num2
return total
}
func divide()->Int{
let total = num1 / num2
return total
}
}
let operation = Calculate(firstNum:5 , secondNum:5)
print(operation.divide())
最佳答案
单一责任意味着类应该只有一个逻辑功能。
因此,如果你有计算器,它是完全可以的,它可以计算。“单一”并不意味着“单一方法”。计算器能求和、除等对吗?所以,这正是calculator类方法应该做的。
例如,如果您想连接两个计算器类,那么添加方法“connecttoanthercalculator”是不利于srp的。正确的方法是创建连接器类,该类应处理计算器之间的通信。
关于swift - 我需要帮助重构代码以符合“单一职责”原则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34356667/