2012-02-01 143 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