Coding style Julia函数命名:我应该在什么时候附加一个bang?

Coding style Julia函数命名:我应该在什么时候附加一个bang?,coding-style,julia,Coding Style,Julia,Julia风格指南指出,“修改其参数”的函数的名称应以结尾 但是,关于: 确实修改其参数,但在返回之前将其返回到原始状态的函数 返回执行时修改参数的任务的函数 返回这样一个任务的函数,但当它完成时,参数将恢复到其原始状态 他们的名字应该以结尾吗 作为一个例子,考虑使用Kuuths进行查找。它实现了一个类型CoverSet,可以用子集填充,然后查询第一个确切的CoverSet: set = CoverSet() push!(set, [1, 2]) push!(set, [2, 3]) push

Julia风格指南指出,“修改其参数”的函数的名称应以
结尾

但是,关于:

  • 确实修改其参数,但在返回之前将其返回到原始状态的函数

  • 返回执行时修改参数的任务的函数

  • 返回这样一个
    任务的函数
    ,但当它完成时,参数将恢复到其原始状态

  • 他们的名字应该以
    结尾吗


    作为一个例子,考虑使用Kuuths进行查找。它实现了一个类型

    CoverSet
    ,可以用子集填充,然后查询第一个确切的CoverSet:

    set = CoverSet()
    push!(set, [1, 2])
    push!(set, [2, 3])
    push!(set, [3, 4])
    push!(set, [4, 1])
    
    find_exact_cover(set) # returns [1, 3]
    
    搜索解决方案时,
    find\u exact\u cover
    函数临时修改
    set
    中的数据,但当
    find\u exact\u cover
    返回时,
    set
    将处于其原始状态。应该命名为
    查找准确的封面而不是

    类似地,
    execute\u cover\u producer
    返回一个生成所有精确封面的
    任务
    ,但当该
    任务
    完成时,
    set
    将被还原:

    for cover in exact_cover_producer(set)
      println(cover) # prints [1,3] and [2,4]
    end
    # By now, set is restored.
    
    应该是
    精确的封面制作


    我知道这可能被认为是主观的,所以让我澄清我的要求:我想知道Julia社区是否有关于这方面的公约,理想情况下,也可以使用标准库或任何使用这两种样式的软件包中的示例。

    参见:当前惯例是函数正在变异,因此具有
    ==
    ,则添加code>


    (但也有一些理由支持更宽泛的定义;请参见上述讨论。)

    当我看到函数没有julia中的bang时,我假设我传入的所有参数在调用完成后都将保持不变。函数内部发生的事情与我无关。谢谢你的回答,但这并不能完全回答我的问题。考虑中的参数甚至可能没有定义有效的
    =
    (如我的示例中所示)。但是,即使我们将定义扩展到相等的外部可见行为(通过一些定义的接口),这也不能回答我的任何观点,因为它没有说明相等应该在什么时候成立。最接近的部分是关于并发性的部分,但这是模糊的,远离常规。无论如何,这个链接很有用,所以+1。