最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年08月03日 11:36:07   投稿:goldensun  
這篇文章主要介紹了Ruby編程中的命名風(fēng)格指南,包括變量和自定義方法等的常用命名格式,需要的朋友可以參考下

用英語命名標(biāo)識符。

  

 # 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?)。
    方法不返回一個布爾值,不應(yīng)該以問號結(jié)尾。

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

   

 # 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ù)危險方法(bang)來定義對應(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ù) |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ù)命名為 other (<< 與 [] 是這條規(guī)則的例外,因為它們的語義不同)。

  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 語言,它們在其它語言中并不是很通用。鼓勵使用 select 而不是 find_all 是因為 select 與 reject 一同使用時很不錯,并且它的名字具有很好的自解釋性。

    不要使用 count 作為 size 的替代。對于 Enumerable 的 Array 以外的對象將會迭代整個集合來
    決定它的尺寸。

 

  # bad
  some_hash.count

  # good
  some_hash.size

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

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

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

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

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

  # good
  array.reverse_each { ... }


相關(guān)文章

  • 在博客中屏蔽垃圾留言的簡單方法

    在博客中屏蔽垃圾留言的簡單方法

    這篇文章主要介紹了在博客中屏蔽垃圾留言的簡單方法,作者以Ruby on Rails搭建的博客應(yīng)用為例,需要的朋友可以參考下
    2015-08-08
  • Ruby基礎(chǔ)知識之?dāng)?shù)據(jù)類型

    Ruby基礎(chǔ)知識之?dāng)?shù)據(jù)類型

    這篇文章主要介紹了Ruby基礎(chǔ)知識之?dāng)?shù)據(jù)類型,本文講解了數(shù)值類型、字符串類型、字符類型、哈希類型、范圍類型、對象標(biāo)識、對象的類、類型等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Ruby實現(xiàn)的最優(yōu)二叉查找樹算法

    Ruby實現(xiàn)的最優(yōu)二叉查找樹算法

    這篇文章主要介紹了Ruby實現(xiàn)的最優(yōu)二叉查找樹算法,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • Ruby常量查找路徑問題深入研究

    Ruby常量查找路徑問題深入研究

    這篇文章主要介紹了Ruby常量查找路徑問題深入研究,本文給出了多個例子來探討Ruby的常量查找路徑,并給出了總結(jié)結(jié)論,需要的朋友可以參考下
    2015-03-03
  • 使用RVM實現(xiàn)控制切換Ruby/Rails版本

    使用RVM實現(xiàn)控制切換Ruby/Rails版本

    RVM 是Ruby Version Manager的縮寫,是一個命令行工具,它可以讓你輕松地安裝,管理和使用多個版本的Ruby.不同的rails項目使用等ruby和rails版本不一樣的時候,可以使用RVM自由切換。
    2017-06-06
  • Rails腳手架使用實例

    Rails腳手架使用實例

    這篇文章主要介紹了Rails腳手架使用實例,通過8個步驟來實現(xiàn)一個完整案例,需要的朋友可以參考下
    2014-06-06
  • ruby中并發(fā)并行與全局鎖詳解

    ruby中并發(fā)并行與全局鎖詳解

    最近在學(xué)習(xí)ruby,想著將自己學(xué)習(xí)的內(nèi)容總結(jié)一下分享出來,下面這篇文章主要給大家介紹了關(guān)于ruby中并發(fā)并行與全局鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • 利用RJB在Ruby on Rails中使用Java代碼的教程

    利用RJB在Ruby on Rails中使用Java代碼的教程

    這篇文章主要介紹了利用RJB在Ruby on Rails中使用Java代碼的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • 深入講解Ruby中Block代碼快的用法

    深入講解Ruby中Block代碼快的用法

    這篇文章主要介紹了深入講解Ruby中Block代碼快的用法,block是Ruby學(xué)習(xí)進階當(dāng)中的重要知識,需要的朋友可以參考下
    2015-05-05
  • 淺談Rails 4 中Strong Parameters機制

    淺談Rails 4 中Strong Parameters機制

    本文主要是通過Rails3中的Parameters與Rails4中新引入的Strong Parameters機制進行對比,從而得出他們直接的異同
    2014-06-06

最新評論

寿阳县| 临夏县| 雅安市| 平果县| 新闻| 丹阳市| 遂川县| 宣城市| 井研县| 开阳县| 涟源市| 青浦区| 鄂伦春自治旗| 宁阳县| 临桂县| 淮北市| 五常市| 成安县| 革吉县| 弥渡县| 卫辉市| 新安县| 永清县| 皋兰县| 礼泉县| 获嘉县| 阿拉善盟| 静乐县| 郁南县| 海门市| 阜城县| 临湘市| 玛纳斯县| 桦川县| 揭阳市| 莎车县| 长治市| 仲巴县| 绥芬河市| 红河县| 宜城市|