你如何命名Swift协议中的函数?

时间:2017-12-29 01:23:14

标签: swift swift-protocols

当我像这样在Swift中声明一个协议时,比如网络模块:

Protocol MyNetworkProtocol {
    func reportError(error: Int)   // <-- do you add prefix for this?
}

如何命名协议中的函数?你为它添加了前缀吗?

我问这个,因为如果我按照上面所示命名函数,调用者就像:

class MyClass: MyNetworkProtocol {

    // some code for MyClass

    func reportError(error: Int) {
        // some code to handle it
    }
}

如果我单独查看MyClass中的代码,则reportError不能立即识别为另一个类的协议的实现(除非我在代码中添加了一些注释)。

我想在这样的协议中命名函数:

Protocol MyNetworkProtocol {
    func myNetworkProtocol_reportError(error: Int)   
}

因此,在MyClass中,我可以很快知道它是某个类的协议的实现。这有必要吗?我是否误解了一些概念?

2 个答案:

答案 0 :(得分:2)

不要那样做。而是将协议方法分离为单独的扩展。

class MyClass {
}

extension MyClass: MyNetworkProtocol {
    func reportError(error: Int) {
        // some code to handle it
    }
}

答案 1 :(得分:-1)

在协议功能中,按协议名称开始,带有协议类和参数的参数。额外的

Protocol MyNetworkProtocol {

    func myNetworkProtocol(_ myNetwork: MyNetworkProtocol, _reportErrot: Int)

    }
}

像这个功能将有助于轻松调试