Ruby的撰寫風格coding style

Mino chen
CodeForMyself
Published in
4 min readFeb 9, 2021
https://www.geeksforgeeks.org/interesting-facts-about-ruby-programming-language/

程式小白一開始的時候,完全不知道為什麼要空兩格?
是不是空成四格就不會動了?
有時候要這樣寫,有時候又不要,一堆資訊我該從何看起?

現在回頭重看,覺得自己真的有所進步,那就把這些進步記錄下來,也算是一步一步達成我今年的其中一個目標,把學到的用自己的話 output 出來!

每個程式語言都有自己的撰寫風格,尤其是協作專案時,大家都是各自在開發功能,如果撰寫風格差異很大,就會造成可讀性或是協作修改時的困難,以前看的時候,其實不能理解為什麼要這樣,但是現在重看,突然領悟有種喔~原來是這樣!

以下就列出我覺得常用到,然後需要知道的撰寫風格,剩下大家有興趣研究的話,覺得有提供好的語法跟不好的語法可以參考很棒,歡迎到以下網址研讀:
https://github.com/rubocop-hq/ruby-style-guide

  1. Ruby 建議兩個空格。我以前常常搞混覺得是四個空格,然後 co-review 就每次都被念。
  2. 不要使用 ; 一行一條語句,這個如果是首抽程式語言就選 ruby 的人就會沒什麼概念吧(就像我),如果像是 JavaScript 在執行結尾就會放 ; 知道說這句已經結束,但是 ruby 世界裡,要求簡潔優雅,如果單行執行程式的話,是以換行來當作結束。
  3. 不要使用and與or關鍵字。使用&&與||來替代。
  4. 定義方法時,避免單行寫法。
def  some_method
body
end

5. (、[之後,]、)之前,不要添加任何空格。在{前後,在}之前添加空格

#差 some (  arg  ) . other  
[ 1 , 2 , 3 ] . each { | e | puts e }
#好
some ( arg ) . other
[ 1 , 2 , 3 ] . each { | e | puts e }

6. 對於插值表達式,括號內兩端不要添加空格。

#差
"From: #{ user . first_name } , #{ user . last_name } "
#好
"From: #{ user . first_name } , #{ user . last_name } "

7. 使用def定義方法時,如果有參數則使用括號,如果無參數則省略括號。

#好
def some_method
#省略主體
end
#好
def some_method_with_parameters ( param1 , param2 )
#省略主體
end

8. 方法調用應當使用括號包裹參數

temperance  =  Person . new  'Temperance' ,  30   #差
temperance = Person . new ( 'Temperance' , 30 ) #好

#例外1 內部DSL 的組成部分(比如Rake、Rails、RSpec)
validates ( :name , presence : true ) #差
validates :name , presence : true #好

#例外2 具有“關鍵字”特性的方法
class Person
attr_reader ( :name , :age ) #差
attr_reader :name , :age #好

#省略主體
end

puts ( temperance . age ) #差
puts temperance . age #好

9.不要使用括號包裹流程控制中的條件表達式。

#差
if ( x > 10 )
#省略主體
end

#好
if x > 10
#省略主體
end

10. 當被調用方法是當前區塊中唯一操作時,傾向使用簡短的傳參語法

#差
names . map { | name | name . upcase }

#好
names . map ( & :upcase )

當然還有很多我也覺得超級重要,例如說命名規則、其他的簡寫方法等等,但因為我覺得省略太多的內容,對於像我這種初階者更難理解,等我熟練之後,就可以鑽研更精簡且優雅的語法了!

--

--