我们应该在方法的第一个参数上添加一个外部参数名称吗?为什么?

清扫器

注意:我在这里只谈论Swift 2。

我已经看到了两种方法命名约定:

func animateWithDuration(duration: NSTimeInterval, animation: () -> Void)

func animate(withDuration duration: NSTimeInterval, animation: () -> Void)

我听说其中之一更加“敏捷”。但是我不记得是哪个。但是为什么人们甚至会在意呢?调用时,这两个约定看起来几乎相同:

animateWithDuration(10) { ... }

经文

animate(withDuration: 10) { ... }

当您尝试大声朗读该方法时,它们的含义完全相同:

为时长10设置动画

那么哪个更快捷,为什么呢?

前一种语法是Swift 2的首选/默认语法,后一种是Swift 3的首选/默认语法。

在WWDC 2016的视频“ Swift API设计指南”中,他们描述了对Cocoa API中这种较旧的以前语法的印象:

因此,当您将所有为Objective-C编写的所有API未经修改地带入Swift时,它们似乎有点不合时宜。他们感到有些不快。

因此,根据Apple自己的估计,新语法更加快速。

话虽如此,如果您只考虑使用Swift 2.x,则为了保持一致性,可以轻松地提出坚持使用传统语法的理由。另外(在我看来,更引人注目的是),您可以开始采用新的语法,而您自然可以这样做,以简化Swift 3的迁移路径。

但是我不认为它像“总是在方法名称中包括参数名称”或“不”那样简单。在Swift 3中,有些情况下我们会定义第一个参数没有外部参数名称的方法(就像在Swift 2中一样,在某些情况下,我们会为第一个参数提供外部名称)。最好让该视频中概述的原理(或在swift.org网站上概述)来指导您的方法命名实践。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们应该在类中始终有一个零参数构造函数吗?

我们应该在另一个类中传递注入的对象吗

为什么对于equals方法我们需要一个Object参数?

jquery更改&通过?在第一个参数上

我们可以有一个由名称参数函数组成的数组吗?

当我们覆盖一个方法时,我们应该使用方法签名中的所有参数吗?

我们可以画一个使用Path对象的圆吗?[在参数上,例如drawPath()]

为什么我们需要在优先级队列声明中添加一个向量作为参数?

为什么没有在第二个参数上只在第一个参数上进行类型检查?

为什么我应该在正则表达式 JavaScript 的末尾添加一个空格

我们应该在Service,intentservice,runnable和thread之间使用哪一个?

我们是否应该在类上使用 @Component 注释来记录/指示它是一个 Bean?

为什么我不能打印传递给程序的第一个参数?

为什么第一个AJAX调用会重置我的视图参数?

我们可以在同一个 div 中使用 row 和 col-md-12 吗?还是应该在父子 div 中?

我应该在每个类方法中创建一个新的Promise吗?

值不能为空。参数名称:第一个

我可以将hash作为方法中的第一个参数吗?

为什么没有为方法/构造函数的第一个参数命名?

为什么在调用时不需要在Swift中使用函数的第一个参数名?

powershell的第一个参数是object []类型吗?

为什么我们应该创建一个 Maven 项目来编写测试脚本

$ @除了第一个参数

第一个参数索引

当我们在一个接口中添加两个抽象方法并只实现一个方法时,为什么我们不能使用 lambda 实现另一个方法呢?

我们应该将 addEvenetListener 方法视为一个循环吗?

为什么 mutate() 给我一个错误,我应该在使用整数向量时使用整数向量?

namedtuple的第一个参数用于什么?

“ [`”的第一个参数的名字是什么?