校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 淺析Ruby的源代碼布局及其編程風格

淺析Ruby的源代碼布局及其編程風格

熱門標簽:徐州網絡外呼系統哪個好 高德地圖標注客服 電銷機器人廠商代理 白銀外呼paas系統 湖州u友防封電銷卡 滴滴外呼系統 百度地圖標注自定義圖片 常德電銷平臺外呼系統軟件價格 地圖標注賺錢項目注冊

使用 UTF-8 作為源文件編碼。

    每個縮進級別使用兩個 spaces (又名軟 tabs). 不要硬 tabs

  # bad - four spaces
  def some_method
    do_something
  end

  # good
  def some_method
   do_something
  end

    使用 Unix-風格 換行符。(*BSD/Solaris/Linux/OSX 用戶被為默認涵蓋,Windows 用戶必須特別小心.)

  •         \n是換行,英文是LineFeed,ASCII碼是0xA。
  •         \r是回車,英文是Carriage Return ,ASCII碼是0xD。
  •         windows下enter是 \n\r,unix下是\n,mac下是\r

        如果你正在使用 Git 你可能會想要添加下面的配置設置來保護你的項目(避免)Windows 蔓延過來的換行符:

 

  $ git config --global core.autocrlf true

    不用使用 ; 來分割語句和表達式。以此推論 - 一行使用一個表達式

  

 # bad
  puts 'foobar'; # superfluous semicolon

  puts 'foo'; puts 'bar' # two expression on the same line

  # good
  puts 'foobar'

  puts 'foo'
  puts 'bar'

  puts 'foo', 'bar' # this applies to puts in particular

    對于沒有內容的類定義,盡可能使用單行類定義形式.

   

 # bad
  class FooError  StandardError
  end

  # okish
  class FooError  StandardError; end

  # good
  FooError = Class.new(StandardError)

    避免單行方法。即便還是會受到一些人的歡迎,這里還是會有一些古怪的語法用起來很容易犯錯.
    無論如何 - 應該一行不超過一個單行方法.

    

# bad
  def too_much; something; something_else; end

  # okish - notice that the first ; is required
  def no_braces_method; body end

  # okish - notice that the second ; is optional
  def no_braces_method; body; end

  # okish - valid syntax, but no ; make it kind of hard to read
  def some_method() body end

  # good
  def some_method
   body
  end

    空方法是這個規則的例外。

  # good
  def no_op; end

    操作符旁的空格,在逗號,冒號和分號后;在 { 旁和在 } 之前,大多數空格可能對 Ruby 解釋(代碼)無關,但是它的恰當使用是讓代碼變得易讀的關鍵。

  sum = 1 + 2
  a, b = 1, 2
  1 > 2 ? true : false; puts 'Hi'
  [1, 2, 3].each { |e| puts e }

    唯一的例外是當使用指數操作時:

  # bad
  e = M * c ** 2

  # good
  e = M * c**2

    { 和 } 值得額外的澄清,自從它們被用于 塊 和 hash 字面量,以及以表達式的形式嵌入字符串。
    對于 hash 字面量兩種風格是可以接受的。

  # good - space after { and before }
  { one: 1, two: 2 }

  # good - no space after { and before }
  {one: 1, two: 2}

    第一種稍微更具可讀性(并且爭議的是一般在 Ruby 社區里面更受歡迎)。
    第二種可以增加了 塊 和 hash 可視化的差異。
    無論你選哪一種都行 - 但是最好保持一致。

    目前對于嵌入表達式,也有兩個選擇:

  # good - no spaces
  "string#{expr}"

  # ok - arguably more readable
  "string#{ expr }"

    第一種風格極為流行并且通常建議你與之靠攏。第二種,在另一方面,(有爭議)更具可讀性。
    如同 hash - 選取一個風格并且保持一致。

    沒有空格 (, [之后或者 ], )之前。

 

  some(arg).other
  [1, 2, 3].length

  ! 之后沒有空格 .

  # bad
  ! something

  # good
  !something

    when和case 縮進深度一致。我知道很多人會不同意這點,但是它是"The Ruby Programming Language" 和 "Programming Ruby"中公認的風格。

    

# bad
  case
   when song.name == 'Misty'
    puts 'Not again!'
   when song.duration > 120
    puts 'Too long!'
   when Time.now.hour > 21
    puts "It's too late"
   else
    song.play
  end

  # good
  case
  when song.name == 'Misty'
   puts 'Not again!'
  when song.duration > 120
   puts 'Too long!'
  when Time.now.hour > 21
   puts "It's too late"
  else
   song.play
  end

  case
  when song.name == 'Misty'
   puts 'Not again!'
  when song.duraton > 120
   puts 'Too long!'
  when Time.now > 21
   puts "It's too late"
  else
   song.play
  end

    當賦值一個條件表達式的結果給一個變量時,保持分支的縮排在同一層。

 

  # bad - pretty convoluted
  kind = case year
  when 1850..1889 then 'Blues'
  when 1890..1909 then 'Ragtime'
  when 1910..1929 then 'New Orleans Jazz'
  when 1930..1939 then 'Swing'
  when 1940..1950 then 'Bebop'
  else 'Jazz'
  end

  result = if some_cond
   calc_something
  else
   calc_something_else
  end

  # good - it's apparent what's going on
  kind = case year
      when 1850..1889 then 'Blues'
      when 1890..1909 then 'Ragtime'
      when 1910..1929 then 'New Orleans Jazz'
      when 1930..1939 then 'Swing'
      when 1940..1950 then 'Bebop'
      else 'Jazz'
      end

  result = if some_cond
        calc_something
       else
        calc_something_else
       end

  # good (and a bit more width efficient)
  kind =
   case year
   when 1850..1889 then 'Blues'
   when 1890..1909 then 'Ragtime'
   when 1910..1929 then 'New Orleans Jazz'
   when 1930..1939 then 'Swing'
   when 1940..1950 then 'Bebop'
   else 'Jazz'
   end

  result =
   if some_cond
    calc_something
   else
    calc_something_else
   end

    在方法定義之間使用空行并且一個方法根據邏輯段來隔開。

   

 def some_method
   data = initialize(options)

   data.manipulate!

   data.result
  end

  def some_methods
   result
  end

    避免在一個方法調用的最后一個參數有逗號,特別是當參數不在另外一行。

   

 # bad - easier to move/add/remove parameters, but still not preferred
  some_method(
         size,
         count,
         color,
        )

  # bad
  some_method(size, count, color, )

  # good
  some_method(size, count, color)

    當給方法的參數賦默認值時,在 = 兩邊使用空格:

  

 # bad
  def some_method(arg1=:default, arg2=nil, arg3=[])
   # do something...
  end

  # good
  def some_method(arg1 = :default, arg2 = nil, arg3 = [])
   # do something...
  end

    雖然幾本 Ruby 書建議用第一個風格,不過第二個風格在實踐中更為常見(并可爭議地可讀性更高一點)。

    避免在不需要的時候使用行繼續符 \ 。實踐中,
    除非用于連接字符串, 否則避免在任何情況下使用行繼續符。

 

  # bad
  result = 1 - \

       2

  # good (but still ugly as hell)
  result = 1 \

       - 2

  long_string = 'First part of the long string' \

         ' and second part of the long string'

    采用連貫的多行方法鏈式風格。在 Ruby 社區有兩種受歡迎的風格,它們都被認為很好
    - . 開頭(選項 A) 和 尾隨 . (選項 B) 。

        (選項 A) 當一個鏈式方法調用需要在另一行繼續時,將 . 放在第二行。

        

# bad - need to consult first line to understand second line
    one.two.three.
     four

    # good - it's immediately clear what's going on the second line
    one.two.three
     .four

        (選項 B) 當在另一行繼續一個鏈式方法調用,將 . 放在第一行來識別要繼續的表達式。

     

  # bad - need to read ahead to the second line to know that the chain continues
    one.two.three
     .four

    # good - it's immediately clear that the expression continues beyond the first line
    one.two.three.
     four

        在這里可以發現有關這兩個另類風格的優點的討論。

    如果一個方法調用的跨度超過了一行,對齊它們的參數。當參數對齊因為行寬限制而不合適,
    在第一行之后單縮進也是可以接受的。

  

 # starting point (line is too long)
  def send_mail(source)
   Mailer.deliver(to: 'bob@example.com', from: 'us@example.com', subject: 'Important message', body: source.text)
  end

  # bad (double indent)
  def send_mail(source)
   Mailer.deliver(
     to: 'bob@example.com',
     from: 'us@example.com',
     subject: 'Important message',
     body: source.text)
  end

  # good
  def send_mail(source)
   Mailer.deliver(to: 'bob@example.com',
           from: 'us@example.com',
           subject: 'Important message',
           body: source.text)
  end

  # good (normal indent)
  def send_mail(source)
   Mailer.deliver(
    to: 'bob@example.com',
    from: 'us@example.com',
    subject: 'Important message',
    body: source.text
   )
  end

    對齊多行跨度的 array literals 的元素。

   

 # bad - single indent
  menu_item = ['Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam',
   'Baked beans', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam']

  # good
  menu_item = [
   'Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam',
   'Baked beans', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam'
  ]

  # good
  menu_item =
   ['Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam',
    'Baked beans', 'Spam', 'Spam', 'Spam', 'Spam', 'Spam']

    大數值添加下劃線來提高它們的可讀性。

  # bad - how many 0s are there?
  num = 1000000

  # good - much easier to parse for the human brain
  num = 1_000_000

    使用 RDoc 以及它的慣例來撰寫 API 文檔。注解區塊及 def 不要用空行隔開。

    每一行限制在 80 個字符內。

    避免行尾空格。

    不要使用區塊注釋。它們不能由空白引導(=begin 必須頂頭開始),并且不如普通注釋容易辨認。

 

  # bad
  == begin
  comment line
  another comment line
  == end

  # good
  # comment line
  # another comment line

    在 API 文檔中使用 RDoc和它的公約。不要在注釋代碼塊和def之間加入空行。

    保持每一行少于80字符。

    避免尾隨空格。

您可能感興趣的文章:
  • Ruby中編寫類與模塊的風格指南
  • Ruby編程中的命名風格指南
  • Ruby編程中的語法使用風格推薦
  • 你應該知道的Ruby代碼風格
  • GitHub倡導的Ruby代碼編寫風格總結

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

巨人網絡通訊聲明:本文標題《淺析Ruby的源代碼布局及其編程風格》,本文關鍵詞  淺析,Ruby,的,源代碼,布局,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺析Ruby的源代碼布局及其編程風格》相關的同類信息!
  • 本頁收集關于淺析Ruby的源代碼布局及其編程風格的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久久久久久av麻豆果冻| 成人国产精品免费网站| 国产精品久线在线观看| 久久网站最新地址| 久久久久高清精品| 中文字幕二三区不卡| 国产欧美日韩在线看| 国产亚洲一区二区三区在线观看| 日韩精品一区二区三区蜜臀| 91精品国产综合久久精品性色| 欧美视频一区在线| 欧美日韩一区成人| 欧美成人性战久久| 亚洲国产精品二十页| 亚洲同性同志一二三专区| 亚洲精品国产一区二区三区四区在线| 国产精品伦理在线| 亚洲国产人成综合网站| 青青草原综合久久大伊人精品优势| 青青草原综合久久大伊人精品 | 国产精品网站导航| 亚洲色图另类专区| 婷婷综合在线观看| 青青草原综合久久大伊人精品 | 国产一区二三区| 丁香亚洲综合激情啪啪综合| 波波电影院一区二区三区| 在线看国产日韩| 91精品国产91久久久久久最新毛片| 精品国产乱码久久久久久老虎| 国产精品三级视频| 五月天激情小说综合| 国产精品一二三在| 在线观看一区日韩| 国产亚洲欧美日韩俺去了| 亚洲午夜精品在线| 国产美女av一区二区三区| 欧美制服丝袜第一页| 久久先锋影音av鲁色资源网| 亚洲女与黑人做爰| 日韩va欧美va亚洲va久久| 老司机精品视频导航| 色综合欧美在线视频区| 久久综合色之久久综合| 亚洲18影院在线观看| 成人一道本在线| 日韩欧美一区电影| 亚洲一区在线免费观看| 成年人国产精品| 精品日韩一区二区三区免费视频| 日韩毛片视频在线看| 国产一区二区三区在线观看免费视频 | 欧美精品一区二区在线播放| 尤物av一区二区| 国产福利一区二区三区在线视频| 欧美久久一二区| 一区二区三区日韩在线观看| 粉嫩欧美一区二区三区高清影视| 欧美一区二区网站| 亚洲国产日韩在线一区模特| 色婷婷av一区二区三区软件| 国产日韩欧美麻豆| 国产麻豆一精品一av一免费 | 精品一区二区三区视频在线观看| 色婷婷av一区| 成人欧美一区二区三区白人 | 精品国产乱码久久久久久免费 | voyeur盗摄精品| 国产午夜精品一区二区三区嫩草 | 欧美精品xxxxbbbb| 亚洲一区av在线| 欧洲在线/亚洲| 一区二区三区日韩欧美精品 | 宅男在线国产精品| 亚洲va天堂va国产va久| 欧美丝袜丝nylons| 亚洲国产精品久久久久婷婷884 | 日本亚洲最大的色成网站www| 欧美亚洲动漫精品| 亚洲福利国产精品| 欧美精品自拍偷拍| 另类欧美日韩国产在线| 精品欧美黑人一区二区三区| 国产一区二区三区在线观看精品 | 欧美一卡二卡三卡| 日韩av电影免费观看高清完整版在线观看| 在线观看中文字幕不卡| 亚洲国产中文字幕| 欧美亚洲综合在线| 亚洲综合成人网| 欧美三级日韩三级| 亚洲在线中文字幕| 日韩欧美久久久| 国产精品一区二区在线观看网站| 精品对白一区国产伦| 岛国av在线一区| 亚洲自拍偷拍欧美| 日韩免费观看高清完整版在线观看| 日本三级韩国三级欧美三级| 欧美成人午夜电影| 国产69精品一区二区亚洲孕妇| 国产精品剧情在线亚洲| 91浏览器在线视频| 亚洲成人激情综合网| www日韩大片| 色哟哟一区二区| 精品综合久久久久久8888| 国产亚洲欧美激情| 欧美日韩久久一区二区| 国产呦萝稀缺另类资源| 一区二区视频在线看| 日韩欧美国产综合一区| 91亚洲资源网| 精品一区二区综合| 一区二区三区蜜桃网| 久久久亚洲国产美女国产盗摄| av成人免费在线| 另类综合日韩欧美亚洲| 亚洲欧美日韩国产综合在线 | 成人精品视频一区二区三区尤物| 亚洲综合丁香婷婷六月香| 欧美精品一区二区三区在线| 欧洲精品一区二区| 激情综合一区二区三区| 亚洲综合视频在线观看| 中文无字幕一区二区三区| 欧美精品色一区二区三区| 成人av影院在线| 成人综合在线视频| 久久99热这里只有精品| 国产精品色呦呦| xfplay精品久久| 欧美一卡二卡在线| 欧美日韩成人综合天天影院| 91香蕉视频在线| 高清视频一区二区| 久久99久久久久久久久久久| 国产精品福利一区| 久久香蕉国产线看观看99| 欧美高清dvd| 欧美日本一道本| 91福利小视频| 99热国产精品| 成人性视频免费网站| 激情综合五月天| 免费在线观看视频一区| 日韩国产欧美在线播放| 亚洲一区二区视频在线观看| 亚洲丝袜制服诱惑| 亚洲精品日韩专区silk | 99久久免费视频.com| 成熟亚洲日本毛茸茸凸凹| 国产综合色在线视频区| 免费成人在线网站| 蜜臀av一级做a爰片久久| 亚洲bt欧美bt精品777| 午夜精品成人在线视频| 亚洲va欧美va国产va天堂影院| 中文字幕一区在线| 日韩一区在线看| 一区二区激情视频| 天涯成人国产亚洲精品一区av| 偷窥国产亚洲免费视频 | 欧美激情一区二区三区蜜桃视频| 久久综合久久综合亚洲| 日本一二三四高清不卡| 中文字幕免费不卡| 一区二区三区美女| 日韩精品一二区| 国产日韩亚洲欧美综合| 激情国产一区二区 | 韩国欧美一区二区| 久久99蜜桃精品| 粉嫩欧美一区二区三区高清影视| 国产精品一卡二卡在线观看| 成人av免费在线观看| 色综合久久天天| 7777精品伊人久久久大香线蕉超级流畅 | 中文字幕永久在线不卡| 亚洲尤物在线视频观看| 天堂一区二区在线免费观看| 免费三级欧美电影| 盗摄精品av一区二区三区| 欧美午夜片在线看| 26uuu亚洲| 亚洲天堂成人在线观看| 日韩va亚洲va欧美va久久| 成人综合在线网站| 7777精品伊人久久久大香线蕉的 | 美女在线一区二区| 成人涩涩免费视频| 在线一区二区观看| 久久这里只有精品首页| 亚洲精品综合在线| 视频一区欧美精品| 国产一区二区三区香蕉| 一本久久综合亚洲鲁鲁五月天| 日韩一级免费观看| 亚洲欧美日韩久久| 婷婷国产在线综合|