在Swift中区分具有相同名称的多个功能目的的最佳方法是什么。 例如,我有以下代码:
protocol SomeProtocol {
func simpleFunc() -> Bool
func simpleFunc() -> Int
func simpleFunc(type: SomeType, x: Int, y: Int) -> [SomeModel]
func simpleFunc(type: SomeType, z: String) -> [String]
}
当我将使用这些功能时,将不清楚任何此功能的目的是什么。我想做一些像默认tableView
函数那样的事情。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
当我选择此功能时,我理解它用于didSelectRowAt
所以我做了类似的事情:
protocol SomeProtocol {
func simpleFunc() -> Bool /* purpose1 */
func simpleFunc() -> Int /* purpose2 */
func simpleFunc(purpose3 type: SomeType, x: Int, y: Int) -> [SomeModel]
func simpleFunc(purpose4 type: SomeType, z: String) -> [String]
}
不幸的是,如果功能没有参数,这种方法将无效。这里的最佳做法是什么?
答案 0 :(得分:1)
从实际角度来看,最后两个功能实际上并没有相同的名称。在第一组代码中,最后两个代码需要调用为:
simpleFunc(type: whatever, x: 5, y: 42)
simpleFunc(type: whatever, z: "Hi")
在第二组代码中,最后两个代码更改为:
simpleFunc(purpose3: whatever, x: 5, y: 42)
simpleFunc(purpose4: whatever, z: "Hi")
无论哪种方式,来电者都不会简单地使用simpleFunc
。所有参数也都参与其中。
鉴于此,没有理由说明前两个函数只能被恰当地命名,例如:
func simpleFuncPurpose1() -> Bool
func simpleFuncPurpose2() -> Int
然后按预期调用它们:
simpleFuncPurpose1()
simpleFuncPurpose2()
总之,结合您的第二组代码,现在调用这四种方法如下:
simpleFuncPurpose1()
simpleFuncPurpose2()
simpleFunc(purpose3: whatever, x: 5, y: 42)
simpleFunc(purpose4: whatever, z: "Hi")