読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Railsもコーディング規約を守っていないので程々が丁度良いのかもしれない(小並感

ruby 戯言

ワザマエを向上させるにはタツジンのコードを読むのが一番。
巷ではそう言われていますし、僕も同意見です。

話はかわりまして...世の中にはコーディング規則というものがございます。
保守性の高いコードを書くためのお約束事を記載したものです。
例えば次のリンクのものが有名ですね。
https://github.com/fortissimo1997/ruby-style-guide/blob/japanese/README.ja.md
具体的な例を一個抽出しますと...Array#*よかArray#joinを使え...と書いています。

不可解なArray#*メソッドよりもArray#joinを好みます。 [link]

# 悪い例
%w(one two three) * ', '
# => 'one, two, three'

# 良い例
%w(one two three).join(', ')
# => 'one, two, three'

ではここでRubyを一躍世界言語にした傑作Webフレームワーク"Rails"のコードを見てみましょう。

##active_support/core_ext/object/to_param.rb
class Hash
  # Returns a string representation of the receiver suitable for use as a URL
  # query string:
  #
  #   {name: 'David', nationality: 'Danish'}.to_param
  #   # => "name=David&nationality=Danish"
  #
  # An optional namespace can be passed to enclose the param names:
  #
  #   {name: 'David', nationality: 'Danish'}.to_param('user')
  #   # => "user[name]=David&user[nationality]=Danish"
  #
  # The string pairs "key=value" that conform the query string
  # are sorted lexicographically in ascending order.
  #
  # This method is also aliased as +to_query+.
  def to_param(namespace = nil)
    if empty?
      namespace ? nil.to_query(namespace) : ''
    else
      collect do |key, value|
        value.to_query(namespace ? "#{namespace}[#{key}]" : key)
      end.sort! * '&'
    end
  end
end

          . -―- .      やったッ!! さすがRails
             /       ヽ
          //         ',      おれたちにできない事を
            | { _____  |        平然とやってのけるッ!
        (⌒ヽ7´        ``ヒニ¨ヽ
        ヽ、..二二二二二二二. -r‐''′     そこにシビれる
        /´ 〉'">、、,,.ィ二¨' {.  ヽ     _ _      あこがれるゥ!
         `r、| ゙._(9,)Y´_(9_l′ )  (  , -'′ `¨¨´ ̄`ヽ、
         {(,| `'''7、,. 、 ⌒  |/ニY {              \
           ヾ|   ^'^ ′-、 ,ノr')リ  ,ゝ、ー`――-'- ∠,_  ノ
           |   「匸匸匚| '"|ィ'( (,ノ,r'゙へ. ̄ ̄,二ニ、゙}了
    , ヘー‐- 、 l  | /^''⌒|  | | ,ゝ )、,>(_9,`!i!}i!ィ_9,) |人
  -‐ノ .ヘー‐-ィ ヽ  !‐}__,..ノ  || /-‐ヽ|   -イ,__,.>‐  ハ }
 ''"//ヽー、  ノヽ∧ `ー一'´ / |′ 丿!  , -===- 、  }くー- ..._
  //^\  ヾ-、 :| ハ   ̄ / ノ |.  { {ハ.  V'二'二ソ  ノ| |   `ヽ
,ノ   ヽ,_ ヽノヽ_)ノ:l 'ーー<.  /  |.  ヽヽヽ._ `二¨´ /ノ ノ
/    <^_,.イ `r‐'゙ :::ヽ  \ `丶、  |、   \\'ー--‐''"//
\___,/|  !  ::::::l、  \  \| \   \ヽ   / ノ

...冗談はともかく、Railsにはここ以外にも規約を結構ブッチギってる所がありました。
以前紹介したsubmitの挙動もそうですね。
というわけであまり教条主義に染まらず、柔軟に対応したほうが良いのかも知れません(白目

参考もと

rails/to_query.rb at c4bc2df29456b5d995fc2c390d89872f8fe988a1 · rails/rails · GitHub

修正ログ

8/18 引用ファイルが間違っているやないか(憤怒