语法糖方法的命名约定

时间:2012-02-01 13:22:36

标签: ruby naming-conventions syntactic-sugar

我正在构建一个用于通用报告的库,Excel(使用Spreadsheet),并且大部分时间我都会在最后创建的工作表上写出内容(或者主要是因为我主要引用它)

所以我想知道是否存在一种方法的命名约定,这些方法对于普通/未经过处理的方法来说都是糖。

例如,我看到一个blog post,向下滚动到Composite,前一段时间作者使用了#method来加糖,而#method!没有人/手动时。
这可以说是一种正常的做事方式,还是一种奇怪的实施方式?

我现在想做的是:

add_row(data)  
add_row!(sheet, data)

这对我来说感觉非常合适,但对如何命名这些方法有共识吗?

修改 我知道了!用于“危险”的方法和?用于查询/布尔响应。这就是为什么我很好奇Prawn(博客文章)中的用法是否可以说是正常的。

2 个答案:

答案 0 :(得分:0)

我认为你的定义是公平的:

add_row(data)  
add_row!(sheet, data)

会让Ruby用户感到困惑。 Ruby社区有很多命名约定,被认为是命名的事实标准。例如, bang方法旨在修改接收者,请参阅mapmap!。另一个约定是将?作为后缀添加到返回布尔值的方法中。请参阅all?any?以获取参考。

答案 1 :(得分:0)

为什么有两种不同的方法?例如,您可以将工作表设为可选参数,例如

def add_row(sheet = active_sheet, data)
  ...
end

默认值不必只是静态值 - 在这种情况下,它调用active_sheet方法。如果我的内存在ruby 1.9之前是正确的,你必须交换参数,因为可选参数不能跟随非可选参数。

我同意!对我有不同内涵的其他答案。