Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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

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

話はかわりまして...世の中にはコーディング規則というものがございます。
保守性の高いコードを書くためのお約束事を記載したものです。
例えば次のリンクのものが有名ですね。
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 引用ファイルが間違っているやないか(憤怒