2012-02-01 150 views
0

我为通用报告Excel创建了一个库(使用Spreadsheet),并且大部分时间我都会在最后创建的工作表上写出内容(或者我主要参考它)。语法糖方法的命名约定

所以我想知道是否有一个命名约定的方法,主要是糖正常/ unsugared方法。

例如,我看到一个blog post,向下滚动到复合材料,前一段时间,作者使用#method作为加糖和#method!当不加糖/手动。
难道这可以说是一个正常的做事方式,或者只是一个奇怪的实现?

我在想什么做的是现在:

add_row(data) 
add_row!(sheet, data) 

这感觉就像一个不错的选择我,但有关于如何将这些种方法应该命名为达成共识?

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

回答

0

我认为这是公平地说,你的定义:

add_row(data) 
add_row!(sheet, data) 

会混淆Ruby用户。有很多命名约定是Ruby社区被认为是事实上的命名标准。例如,邦方法意在修改接收器,参见mapmap!。另一个约定是将?作为后缀添加到返回布尔值的方法中。请参阅all?any?以供参考。

+0

我知道的方式!通常在Ruby中使用,但是对于这种命名还有一些类似的事实标准吗?或者我应该坚持使用参数的默认值? – gaqzi 2012-02-01 14:22:32

+0

@gaqzi,如果你不想要一个不同的名字,我认为其中一个参数的默认值是最好的方法。 – 2012-02-01 20:06:53

0

我见惯了爆炸的方法为更危险版本,定期开展评选方法:

  • Array#reverse!来修改阵列本身,而不是返回的元素的相反顺序新的数组。

  • ActiveRecord::Base#save!(来自Rails)验证模型并保存它,如果它是有效的。但不像普通版本,返回truefalse取决于模型是否已保存或者如果模型无效将引发异常。

我不记得看到爆炸的方法为加糖替代正规的方法。也许我会给这些方法自己的独特名称,除了给常规版本名称添加爆炸外。

0

为什么有两个单独的方法?例如,您可以使片上的可选参数,例如

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

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

我同意其他答案,!有相当不同的内涵给我。

+0

我希望让他们的命名不同,以便更容易区分何时试图变得聪明以及何时按照所告知的方式进行。不过,我想这并不重要。我在博客文章中看到了这个构造,并好奇它是否是一般事物。 – gaqzi 2012-02-01 14:16:35