Ruby的撰寫風格coding style
Published in
4 min readFeb 9, 2021
程式小白一開始的時候,完全不知道為什麼要空兩格?
是不是空成四格就不會動了?
有時候要這樣寫,有時候又不要,一堆資訊我該從何看起?
現在回頭重看,覺得自己真的有所進步,那就把這些進步記錄下來,也算是一步一步達成我今年的其中一個目標,把學到的用自己的話 output 出來!
每個程式語言都有自己的撰寫風格,尤其是協作專案時,大家都是各自在開發功能,如果撰寫風格差異很大,就會造成可讀性或是協作修改時的困難,以前看的時候,其實不能理解為什麼要這樣,但是現在重看,突然領悟有種喔~原來是這樣!
以下就列出我覺得常用到,然後需要知道的撰寫風格,剩下大家有興趣研究的話,覺得有提供好的語法跟不好的語法可以參考很棒,歡迎到以下網址研讀:
https://github.com/rubocop-hq/ruby-style-guide
- Ruby 建議兩個空格。我以前常常搞混覺得是四個空格,然後 co-review 就每次都被念。
- 不要使用 ; 一行一條語句,這個如果是首抽程式語言就選 ruby 的人就會沒什麼概念吧(就像我),如果像是 JavaScript 在執行結尾就會放 ; 知道說這句已經結束,但是 ruby 世界裡,要求簡潔優雅,如果單行執行程式的話,是以換行來當作結束。
- 不要使用and與or關鍵字。使用&&與||來替代。
- 定義方法時,避免單行寫法。
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 )
當然還有很多我也覺得超級重要,例如說命名規則、其他的簡寫方法等等,但因為我覺得省略太多的內容,對於像我這種初階者更難理解,等我熟練之後,就可以鑽研更精簡且優雅的語法了!