用英語命名標識符。
# bad - identifier using non-ascii characters заплата = 1_000 # bad - identifier is a Bulgarian word, written with Latin letters (instead of Cyrillic) zaplata = 1_000 # good salary = 1_000
使用snake_case的形式給變量和方法命名。
# bad :'some symbol' :SomeSymbol :someSymbol someVar = 5 def someMethod ... end def SomeMethod ... end # good :some_symbol def some_method ... end
Snake case: punctuation is removed and spaces are replaced by single underscores. Normally the letters share the same case (either UPPER_CASE_EMBEDDED_UNDERSCORE or lower_case_embedded_underscore) but the case can be mixed
使用CamelCase(駝峰式大小寫)的形式給類和模塊命名。(保持使用縮略首字母大寫的方式如HTTP,
RFC, XML)
# bad class Someclass ... end class Some_Class ... end class SomeXml ... end # good class SomeClass ... end class SomeXML ... end
使用 snake_case 來命名文件, 例如 hello_world.rb。
以每個源文件中僅僅有單個 class/module 為目的。按照 class/module 來命名文件名,但是替換 CamelCase 為 snake_case。
使用SCREAMING_SNAKE_CASE給常量命名。
# bad SomeConst = 5 # good SOME_CONST = 5
在表示判斷的方法名(方法返回真或者假)的末尾添加一個問號(如Array#empty?)。
方法不返回一個布爾值,不應該以問號結尾。
可能會造成潛在“危險”的方法名(如修改 self或者 參數的方法,exit! (不是像 exit 執行完成項)等)應該在末尾添加一個感嘆號如果這里存在一個該 危險 方法的安全版本。
# bad - there is not matching 'safe' method class Person def update! end end # good class Person def update end end # good class Person def update! end def update end end
如果可能的話,根據危險方法(bang)來定義對應的安全方法(non-bang)。
class Array def flatten_once! res = [] each do |e| [*e].each { |f| res << f } end replace(res) end def flatten_once dup.flatten_once! end end
當在短的塊中使用 reduce 時,命名參數 |a, e| (accumulator, element)。
#Combines all elements of enum枚舉 by applying a binary operation, specified by a block or a symbol that names a method or operator. # Sum some numbers (5..10).reduce(:+) #=> 45#reduce # Same using a block and inject (5..10).inject {|sum, n| sum + n } #=> 45 #inject注入 # Multiply some numbers (5..10).reduce(1, :*) #=> 151200 # Same using a block (5..10).inject(1) {|product, n| product * n } #=> 151200
新聞熱點
疑難解答