ワザマエを向上させるにはタツジンのコードを読むのが一番。
巷ではそう言われていますし、僕も同意見です。
話はかわりまして...世の中にはコーディング規則というものがございます。
保守性の高いコードを書くためのお約束事を記載したものです。
例えば次のリンクのものが有名ですね。
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 引用ファイルが間違っているやないか(憤怒