命名

2018-02-24 16:10 更新

程式設(shè)計(jì)的真正難題是替事物命名及使緩存失效。
——Phil Karlton

  • 標(biāo)識(shí)符用英語(yǔ)命名。

    # 差 - 變量名用非ascii字符
    заплата = 1_000
    
    # 差 - 變量名用帶有拉丁文的保加利亞語(yǔ)寫(xiě)成。
    zaplata = 1_000
    
    # 好
    salary = 1_000
  • 符號(hào)、方法與變量使用蛇底式小寫(xiě)(snake_case)。

    # 差
    :'some symbol'
    :SomeSymbol
    :someSymbol
    
    someVar = 5
    
    def someMethod
      ...
    end
    
    def SomeMethod
     ...
    end
    
    # 好
    :some_symbol
    
    def some_method
      ...
    end
  • 類(lèi)別與模組使用駝峰式大小寫(xiě)(CamelCase)。(保留類(lèi)似 HTTP、RFC、XML 這種縮寫(xiě)為大寫(xiě)。)

    # 差
    class Someclass
      ...
    end
    
    class Some_Class
      ...
    end
    
    class SomeXml
      ...
    end
    
    # 好
    class SomeClass
      ...
    end
    
    class SomeXML
      ...
    end
  • 文件名用蛇底式小寫(xiě),如?hello_world.rb

  • 目錄名用蛇底式小寫(xiě),如?lib/hello_world/hello_world.rb

  • 每個(gè)類(lèi)/模塊都在單獨(dú)的文件,文件名用蛇底式小寫(xiě)而不是駝峰式大小寫(xiě)。

  • 其他常數(shù)使用尖叫蛇底式大寫(xiě)(SCREAMING_SNAKE_CASE)。

    # 差
    SomeConst = 5
    
    # 好
    SOME_CONST = 5
  • 判斷式方法的名字(返回布爾值的方法)應(yīng)以問(wèn)號(hào)結(jié)尾。 (例如:?Array#empty??)。不返回布爾值的方法不應(yīng)用問(wèn)號(hào)結(jié)尾。

  • 有潛在危險(xiǎn)性的方法,若此危險(xiǎn)方法有安全版本存在時(shí),應(yīng)以安全版本名加上驚嘆號(hào)結(jié)尾(例如:改動(dòng)?self?或參數(shù)、?exit!?(不會(huì)向?exit?那樣運(yùn)行 finalizers), 等等方法)。

  • 如果存在潛在的危險(xiǎn)方法(即修改?self?或者參數(shù)的方法,不像?exit?那樣運(yùn)行 finalizers 的?exit!,等等)的安全版本,那么?危險(xiǎn)?方法的名字應(yīng)該以驚嘆號(hào)結(jié)尾。

    # 不好 - 沒(méi)有對(duì)應(yīng)的安全方法
    class Person
      def update!
      end
    end
    
    # 好
    class Person
      def update
      end
    end
    
    # 好
    class Person
      def update!
      end
    
      def update
      end
    end
  • 如果可能的話,根據(jù)危險(xiǎn)方法(bang)來(lái)定義對(duì)應(yīng)的安全方法(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
  • 在簡(jiǎn)短區(qū)塊中使用?reduce?時(shí),把參數(shù)命名為?|a, e|?(累加器(accumulator),元素(element))

  • 在定義二元操作符時(shí),把參數(shù)命名為?other?(<<?與?[]?是這條規(guī)則的例外,因?yàn)樗鼈兊恼Z(yǔ)義不同)。

    def +(other)
      # body omitted
    end
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)