我目前正试图通过阅读一本叫做Practical Object Oriented Design in Ruby的书来理解这些坚实的原则。第一个原则是单一责任,我理解这个概念的方式是,一个类/方法应该只有一个责任或理由来改变。
在下面的代码中,我有一个calculate类,负责(4)四个不同的操作,addsubtractmultiplydivide,这对我来说不符合单一责任理论。
有人能如此和蔼可亲地重构以下类,使其遵循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/

10-13 00:08