2013-06-19 112 views
3

以下紅寶石樣式指南(https://github.com/bbatsov/ruby-style-guide)指出以下:Ruby on Rails的樣式準則,圍繞方法括號參數

  • 省略括號周圍參數對於那些內部DSL的一部分的方法(例如耙,導軌, RSpec),在Ruby中具有「關鍵字」狀態的方法(例如attr_reader,puts)和屬性訪問方法。圍繞所有其他方法調用的參數使用括號。

我曾經經歷過什麼是Rails內部DSL的一部分的爭論。有人可以回答哪些方法是Rails內部DSL的一部分?它包括如link_toI18n.t的方法嗎?哪些方法不是Rails內部DSL的一部分?

回答

0

注意風格指南是純粹的意見,例如,您提到的link_to方法,我認爲包括括號在內是更加清晰的,但這純粹是我的看法。 Rails DSL非常廣泛,並且包含您提到的方法。您可以查看api以獲取完整列表。

1

您引用的指南對此可能是模棱兩可的。它沒有定義「內部DSL」的含義。那麼你應該如何解決這個問題?

首先,我要說,這是一致的比回答你選擇,在這種情況下更重要。

我會說,讓我們來看看的link_to「應該」有括號(再次,不是說有一個正確的答案)。較系統的研究可以做,但我瞟了一眼幾件事情:

  • Rails的指南做使用的括號,*的link_to *,至少不是我看了看(參見,例如部分, http://guides.rubyonrails.org/layouts_and_rendering.html
  • 我看了從GitHub上thoughtbotpivotal的幾個項目。我從每個項目中隨機選擇一個Rails項目,然後搜索該存儲庫中的* link_to *。 thinkbot項目是100%沒有parens。關鍵是14比1沒有parens。

所以這個非常軼事的「數據」,我會說沒有parens去。也許這意味着* link_to *是「內部DSL」的一部分。如果是這樣,那麼可能至少應該考慮在視圖中使用的內置方法(路徑/ URL助手,表單助手等)。

1

一個指導我閱讀,我很喜歡,認爲這是確定省略圓括號如果簡單或清晰的方法,但使用它,如果讀者或編譯器無法輕鬆識別參數或參數組。遺漏的原因是減少混亂,增強可讀性,但不會損失清晰度。