为什么Objective-C转换为快速错误

时间:2020-05-18 08:09:44

标签: ios objective-c swift

为什么


-(void)addSimpleListener:(id<XXSimpleListener>)listener

转换为快速外观,如下所示:

func add(_ listener: XXSimpleListener?) {   
}

但是将方法更改为此


-(void)addSimpleListener:(id<XXSimpleListening>)listener

它将转换为此

func addSimpleListener(_ listener: XXSimpleListening?){
}

1 个答案:

答案 0 :(得分:0)

Xcode(或用于转换的任何工具)仅在Swift API guidelines之后。具体来说:

省略不必要的单词。名称中的每个单词都应在使用地点传达重要信息。

可能需要更多的单词来澄清意图或歧义,但应省略那些读者已经拥有的多余信息。特别是,省略仅重复类型信息的单词。

在第一种情况下,SimpleListener中的单词addSimpleListener重复了参数的类型,因此将它们从方法名称中删除。但是,在第二种情况下,SimpleListenerSimpleListening在您使用的任何工具上看起来都不一样,因此认为应该保留SimpleListener

不过,根据我(人类)的观点,我认为该方法应命名为addListener,因为:

有时,重复类型信息对于避免歧义是必要的,但是通常最好使用描述参数的 role 的单词而不是其类型。

Listener是参数的作用。