読みやすいコードってどんなものか考えてみた -抽象化と名前重要- - 馬鹿と天才は紙一重
自分は果たして読みやすいコードを書けているのか、やや恐ろしく感じながら読んだ。
で、気づいた事その1。その2は後日その2はこちら。共通部分でなくとも抽象化。
件の記事に以下のようなコードが在る。
Product.where(:price => 0..5)
このコードの
の部分、これは「0から5まで」という「範囲」を表すRubyの記法で、これの意味は"0..5
productモデルの中で、priceカラムの値が0から5までを取得
"という事になる。
なるんだけれど、最初、以下のように誤読してしまい、その後の文の意味が一瞬解らなかった。
Product.where(:price => 0.5)
ドット(.
を1つ見落としてしまった。これだと「priceカラムの値が0.5の物を取得」という事になってしまう。
".
"なんて見た目ただの「点」なので認識しにくい事、認識しにくいこと。
ではどうすれば良いんだろう? ……括弧で囲ってみてはどうか。
Product.where(:price => (0..5))
単純な実数を括弧で囲う奴なんて先ず居ないだろうし。実数だとしたら不要な記述とする事で読み手の注意を引きつけようという魂胆。
或いは、空白で区切るのは?
Product.where(:price => 0 .. 5)
これがもし実数ならば、小数点の前後に空白を差し挟む事は出来ない(そもそもしない)ので、読み間違える事はないだろう。更にこの場合、仮にコーディング時にドットを1つ書き漏らしてしまっても、Syntax Errorになるので、直ぐに気づく事が出来そうだ。
……うーん、個人的には前者の方が好みかなぁ。メリットが多いのは後者だろうけど。
ラベル:ruby
うおお、"..."なんて演算子も在ったのか……知らなかった。
しかしこれは確かに分かりづらい。これはコメント以外に注意を促す方法が思いつかないですね……