Scala中的方法命名约定 - 可变而不是版本?

gre*_*man 3 scala naming-conventions method-names

这个例子只是为了表明这一点.

假设我使用矩阵库,但缺乏一些功能,让我们说矩阵中的每个元素加倍对我来说是至关重要的,我决定编写一个方法doubleIt.但是,我可以写这个方法的2个版本

  1. 可变 - doubleItInPlace
  2. 不可变 - doubleItByCreatingNewOne

这有点冗长,因此可以考虑命名约定,添加可变版本_!后缀,或者在其前面添加单词"mut".

是否有任何确定的命名约定来实现这种差异?

axe*_*l22 9

惯例是用命令形式的动词命名可变(通常是副作用)版本.此外,更重要的是,最后使用空参数列表():

def double()
def doubleIt()
Run Code Online (Sandbox Code Playgroud)

不可变版本,即产生新对象的版本,您应该通过被动形式的动词来命名.更重要的是,不要()在最后使用空参数列表:

def doubled
def doubledMatrix
Run Code Online (Sandbox Code Playgroud)

请注意,并非总是以被动形式命名非副作用方法(例如标准集合库),但除非它使名称过于冗长,否则这是一个好主意.

资料来源:Scala styleguide.