【Ruby】Rubyっぽい書き方って、 Nan -Nan ? 【第1回】
はじめに:
Javaの書き方を知っていると(知っているとは言っていない)、
Rubyの多くある便利なメソッドやおしゃれすぎる書き方に、同じPGなのか・・・と驚くことが多いので、
そもそもどう書くべきか?をある程度意識できるようにざっくりまとめていきます。
※今回はあくまで初心者向けで、長編にならないように書いていきます。
後置if
Javaのifと比べて、
メソッドの後ろに if条件を記述すると、その文にif条件が適用される。
unlessでも同じく。
例えば、オプション引数で条件分けしたいとき
- オプションなしで全部表示
- [ l ] のオプションを受け取ったときは、一部表示
[:contents]forで回さず、eachとmapで処理する。
少し端折っていますが、
複数回の処理の時は、できるだけeachで回します。
また、配列に処理を行い配列を作成する場合はmapを使用します。
たまにJava経験者がそのままRubyに書き方を反映させたりします。
ついついforで書きたがるもそうですが、
メソッド名後に、hoge()と書いてしまう事も。
(この場合引数なしなら()はいらず、rubocopで怒られます。)
そしてそういった書き方を書籍や研修教材として出してたりするみたいです。
※最近出たRuby本でもそういった事があるみたいです。
以下該当本を読まれた方の感想
ifやwhileの条件式に()がついたりつかなかったり、== trueと書いててRubyぽくなかったりなんですね。returnわざわざ書くのもRubyぽくないという話があるんでしょうけど、returnに丸括弧をつけるのがかなり独特な感じしました。
Rubyなら、
★ゼロからわかる Ruby 超入門
★プロを目指す人のためのRuby入門
のご購入を!
傾向としてSIer/SES界隈は、コーディングのキレイさ・ひいてはPGさえも軽視する文化があるので、
やはりRuby界隈のベテランの方達から教われるフィヨルドブートキャンプ素晴らしいですね!
Getter/Setter を使うな!!
はい、こちらもRuby界隈では常識みたいです。
そして最近発売されたRuby本にはその記載があるとのことです。
ですのでおとなしくry
setの方は Javaとかと違って name=
というメソッドを定義すると上記のように書けるのも大きい理由です。 参考: https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html
ハッシュの書き方
※ハッシュの終わりを「,」 で締めているのは間違いでなく、伊藤さんのQiita記事より、
将来的に要素が追加される可能性が高い配列やハッシュであれば、1つ前の行を修正せずに新しい要素を追加できるので、プログラム修正の手間が少し省けます。
リターンいらない
return hoge
じゃなくて
で返せる。(不要でなく、なくても返せるので書かない。)
命名規則
ishogehoge はバツ!!
該当の本これも書かれてました。。。
Rubyとsinatr○での本は注意したほうがいいかもしれません。
最後に
ざっと書き上げました。
Javaと比較すると色々と違います。
オーバーロードでの違いも発見したので別記事にまとめる予定です。
参考:
- フィヨルドでもお世話になっている伊藤さんの記事
もはやRubyを学ぶ上で伊藤さんの記事にお世話にならんことはないだろうと思います。
- まさにそのままで検索してクリティカルヒットした
RubyでRubyっぽい書き方をしよう初級編 · GitHub
- こちらは逆に会社規定(推奨?)のコーディングについての記事
RUBOCOPさんは、否定を使わないほうがいいとあるが、使って分かりやすいときは使用したほうが無難。
そして結果が同じでも、処理のパフォーマンスを意識して書く事が求められる。
puts に to_s が含まれるのは知らなんだ。
番外編:
Rubyぽい書き方をすると処理が遅くなるときもあるよ。という事が分かる記事。
この記事の著者もフィヨルドの生徒さんです。
ですがもはやメンターの方では?という知識レベルの方なので、フィヨルドのレベルの高さが垣間見えます。(私みたいな底辺も頑張ってます。)