【发布时间】:2016-05-30 18:46:06
【问题描述】:
在 Ruby 中,变异方法(即修改 self 的方法)按照惯例用 bang (!) 标记,以将它们与不修改 self 的类似命名方法分开。
例如Array#sort 返回一个排序后的数组,但Array#sort! 修改了调用它的数组。
我现在开始研究 Swift。我如何命名变异方法以将其与非变异双胞胎分开?
我知道 Python 有 sorted(list) 和 list.sort()。这是一个很好的模式吗,即.sorted()(非变异)和.sort()(变异)?
那些不容易以这种方式转换的名称,例如String#next vs String#next!?
【问题讨论】:
-
在 Swift 2 中,
sorted()和sort()被重命名为sort()和sortInPlace()。 -
我没想到。我实际上并没有考虑特定的方法,而是尝试寻找一般建议,但找不到任何建议。例如在The Swift Programming Language (Swift 2.1): Extensions section on Mutating Methods 他们使用
square()作为变异方法。 -
好的,谢谢,提供的链接提供了必要的信息。我在谷歌上搜索该文档中的术语,但不知何故错过了它。 *那些没有副作用的应该读作名词短语,例如。
x.distanceTo(y),i.successor()。 * 那些有副作用的应该读作祈使动词短语,例如,print(x)、x.sort()、x.append(y)。 * 使用“ed/ing”规则来命名变异方法的非变异对应物,例如x.sort()/x.sorted()和x.append(y)/x.appending(y). -
在 Swift-Evolution 邮件列表上,他们正在就 Swift 3 的命名约定进行冗长而乏味的讨论。一旦他们确定了答案,他们就会发布 API 命名指南。