主頁(yè) > 知識(shí)庫(kù) > Ruby編程中的命名風(fēng)格指南

Ruby編程中的命名風(fēng)格指南

熱門標(biāo)簽:湖州u友防封電銷卡 白銀外呼paas系統(tǒng) 高德地圖標(biāo)注客服 電銷機(jī)器人廠商代理 百度地圖標(biāo)注自定義圖片 徐州網(wǎng)絡(luò)外呼系統(tǒng)哪個(gè)好 常德電銷平臺(tái)外呼系統(tǒng)軟件價(jià)格 滴滴外呼系統(tǒng) 地圖標(biāo)注賺錢項(xiàng)目注冊(cè)

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

  

 # 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 來(lái)命名文件, 例如 hello_world.rb。

    以每個(gè)源文件中僅僅有單個(gè) class/module 為目的。按照 class/module 來(lái)命名文件名,但是替換 CamelCase 為 snake_case。

    使用SCREAMING_SNAKE_CASE給常量命名。

 

  # bad
  SomeConst = 5

  # good
  SOME_CONST = 5

    在表示判斷的方法名(方法返回真或者假)的末尾添加一個(gè)問(wèn)號(hào)(如Array#empty?)。
    方法不返回一個(gè)布爾值,不應(yīng)該以問(wèn)號(hào)結(jié)尾。

    可能會(huì)造成潛在“危險(xiǎn)”的方法名(如修改 self或者 參數(shù)的方法,exit! (不是像 exit 執(zhí)行完成項(xiàng))等)應(yīng)該在末尾添加一個(gè)感嘆號(hào)如果這里存在一個(gè)該 危險(xiǎn) 方法的安全版本。

   

 # 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

    如果可能的話,根據(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

    當(dāng)在短的塊中使用 reduce 時(shí),命名參數(shù) |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

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

  def +(other)
   # body omitted
  end

    map 優(yōu)先于 collect,find 優(yōu)先于 detect,select 優(yōu)先于 find_all,reduce 優(yōu)先于inject,size 優(yōu)先于 length。以上的規(guī)則并不絕定,如果使用后者能提高代碼的可讀性,那么盡管使用它們。有押韻的方法名(如 collect,detect,inject)繼承于 SmallTalk 語(yǔ)言,它們?cè)谄渌Z(yǔ)言中并不是很通用。鼓勵(lì)使用 select 而不是 find_all 是因?yàn)?select 與 reject 一同使用時(shí)很不錯(cuò),并且它的名字具有很好的自解釋性。

    不要使用 count 作為 size 的替代。對(duì)于 Enumerable 的 Array 以外的對(duì)象將會(huì)迭代整個(gè)集合來(lái)
    決定它的尺寸。

 

  # bad
  some_hash.count

  # good
  some_hash.size

    傾向使用 flat_map 而不是 map + flatten 的組合。
    這并不適用于深度大于 2 的數(shù)組,舉個(gè)例子,如果 users.first.songs == ['a', ['b', 'c']] ,則使用 map + flatten 的組合,而不是使用 flat_map 。
    flat_map 將數(shù)組變平坦一個(gè)層級(jí),而 flatten 會(huì)將整個(gè)數(shù)組變平坦。

  # bad
  all_songs = users.map(:songs).flatten.uniq

  # good
  all_songs = users.flat_map(:songs).uniq

    使用 reverse_each 代替 reverse.each。reverse_each 不會(huì)分配一個(gè)新數(shù)組并且這是好事。

  # bad
  array.reverse.each { ... }

  # good
  array.reverse_each { ... }


您可能感興趣的文章:
  • Ruby中編寫類與模塊的風(fēng)格指南
  • Ruby編程中的語(yǔ)法使用風(fēng)格推薦
  • 淺析Ruby的源代碼布局及其編程風(fēng)格
  • 你應(yīng)該知道的Ruby代碼風(fēng)格
  • GitHub倡導(dǎo)的Ruby代碼編寫風(fēng)格總結(jié)

標(biāo)簽:荊門 永州 張家界 梧州 遼寧 三沙 普洱 公主嶺

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby編程中的命名風(fēng)格指南》,本文關(guān)鍵詞  Ruby,編程,中的,命名,風(fēng)格,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ruby編程中的命名風(fēng)格指南》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Ruby編程中的命名風(fēng)格指南的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章