簡體   English   中英

為什么Rubocop默認指南在方法定義中建議使用括號?

[英]Why does the Rubocop default guidelines recommend parentheses in method definitions?

為什么Rubocop / 社區驅動的Ruby樣式指南在方法定義中推薦括號?

def my_method(param1, param2)
end
# instead of
def my_method param1, param2
end

根據情況允許使用帶括號或不帶括號的方法調用。 然而,我的第一印象是缺乏方法調用的括號比缺乏方法定義的括號更可能不夠明確 它背后是否有原因,例如使代碼更加防呆,還是因為“歷史原因”或“因為它是最廣泛的樣式”而發生?

澄清:

我並不是在詢問哪種風格更易於閱讀的觀點。

棉絨的Lint/AmbiguousOperator基於以下想法: do_something *some_array是模棱兩可的,並且是bug的來源( Link )。 我想知道Style/MethodDefParenthesesLink )是否也是如此。

在回過頭來找到這些警察的實際姓名之后,我現在最好的猜測是沒有“技術”原因,而是一個是適當的“皮棉”,另一個是“樣式”。

初始提交中省略了基本原理,該規則是其中的一部分,表明沒有特定的技術原因。

相應的警察位於Style部門而不是Lint的事實進一步證明了這僅是樣式問題。

方法定義具有非常簡單的語法。 def關鍵字(可選)后跟參數,必須后跟終止符(換行符或; )。

可能的變化是:

  • 單行方法定義,
  • 內聯修飾符,例如private
  • 默認參數和關鍵字參數,
  • splat和塊參數。

所有這些在帶或不帶括號的情況下都可以正常工作。 此外,使用-w標志運行帶有未括號的方法定義的文件不會引發任何警告。

這些因素共同排除了建議使用括號以避免混淆的可能性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM