2011-01-25 53 views
6

我有一個很好的看看,但我找不到約定如何使用字符串報價。我知道兩者之間的差異,但在任何地方,我都能看到帶雙引號的好代碼,其中單打足夠了。因此,我無法識別任何模式。我這樣問是因爲我想開始爲開源做貢獻,我想從一開始就養成良好的習慣。我寧願儘可能使用單引號,也是爲了增強我對兩者之間差異的信心。紅寶石編碼約定單或雙引號字符串

+1

我最近擁抱[github ruby​​ styleguide](https://github.com/styleguide/ruby),字符串約定在底部 – ecoologic 2013-02-26 03:53:13

+0

現在我正在使用[Airbnb Ruby風格指南](https:// github。 COM /製作的Airbnb /紅寶石)。 – ecoologic 2017-11-28 22:56:13

回答

5

我不認爲在整個社區內都有很強的約定。從我所看到的情況來看,似乎有一種傾向於完全忽略單引號,並始終使用雙引號。在一些圈子裏,那甚至是一個約定,但是一個本地化的,而不是整個社區。就個人而言,無論何時我有幾種不同的表達同一事物的方式,我傾向於使用這些不同的方式來表達不同的語義。 (例如,我使用花括號與在塊do/end被用於它們的副作用和塊被用於它們的返回值的塊之間進行區分。)

所以,我只用雙引號當我實際上想使用字符串插值或轉義,否則我使用單引號。這樣,當我看到一個字符串時,我可以立即知道沒有有趣的事情在發生,而且它裏面沒有隱藏的代碼。

雖然我很務實。我非常喜歡"It's a string!"超過'It\'s a string!'%q[It's a string!]

12

什麼你可能已經知道:

  • 單引號就好了簡單的字符串。
  • 如果您需要評估字符串內的任何內容,則需要雙引號。

還有no significant performance difference

使用雙引號是有幫助的,因此您可以使用撇號而不必擔心在字符串內部轉義它們,從而使字符串在代碼中看起來更「漂亮」。認爲"Don't do that"'Don\'t do that'

有一條思路,指出you should never escape in strings。如果在字符串中需要單引號和雙引號,最好使用heredoc或靈活的引號。最後,如果在字符串內部評估Ruby代碼不是一個問題,那麼我會讓它指導你編寫代碼時需要使用什麼。