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

SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



ちょっとイラッとするRubyコードを集めてみました

ちょっとイラッとするRubyコードを集めてみました。そして、ちょっとイラッとするぐらいなら大体autofixできるので、autofixするツールも合わせて紹介します。あくまでちょっとイラッとですよ。

9個挙げてみた

9種類だけちょっと挙げてみました。他にもなにかあればコメント・はてぶコメント等々でぜひご共有下さい。追記します。

1. 気にする人は気にする、white space

rubyの書き方、white space

気にする人はwhite spaceを見えるようにしたりしてるので、イラッとしますよね。 意味があるやつならいいのですが、末尾とかにちょろっとついてると、キッって。 これがたくさんあると、そのプロジェクトを見た時点で、やる気無くしますよね。

これが全角スペースだと更に涙目。(ていうか動かないから全角スペースはさすがに気づく)

2. イ ン デ ン ト

rubyの書き方、インデント

インデントが揃ってないとイラッとしますよね! あと、white spaceと異なり、普通にバグを生みやすい、良くないコードです。 どこでどのブロックが終わってるのか分かりづらいですからね。

3. 無意味なコード

rubyの書き方無意味なコード、

このコード、railsのcontrollerのmethodなんですが、中身が空っぽで無意味ですよね。 railsはroutesに定義してあるパス・メソッドで、viewファイルがあれば、controllerに書く必要はないので、無意味です。もちろん、controllerに書いてあったほうが分かりやすいという意見もあるので断定は出来ないですが、イラッとする人はイラッとするかなと。

4. やたらと深いメソッドチェーン

rubyの書き方、深いメソッドチェーン

これもイラッとしませんか?イラッとっていうか、読みづらい、書きづらいという。。。

ちなみにこのいらっとに対するプラクティスとしては下記が挙げられます。

Law of Demeter
デメテルの法則

要約すると「直接の友達とだけ話すこと」とのことで、

Before:

      monkey.parents.father.foods.each do |food|

After:

      monkey.father_foods.each do |food|

のように直接father_foodsをアクセス出来るメソッドを、モデルに定義するのがより良いと思われます。

5. unused?なコード

rubyの書き方、unusedメソッド

このメソッド, インスタンス変数, アクセサ, その他etc, 使ってるの?か分からなくて消せないってことよくありませんか?

どこでどういう用途をするのか、どういった値を返すのかなど、何らかコメントを書くなどしておいた方が良いですね。どこで使っているか、Javaなどなら検索しやすいのですが、railsのルール全部に対応したエディタを普段から使ってる人はそれほど多くないと思うので、こういったコメント無しの外部からアクセスされる系コードとかは非常に分かりづらいです。

ちょいっとイラッと、というか、もやっとしますよね。

6. 削除されないコメントアウト

rubyの書き方、削除されないコメントアウト

どうせgitでバージョン管理してるんだし、消そうよ!イラッとするよ!と思います。

7. DONT REPEAT YOURSELF

rubyの書き方、DONT REPEAT YOURSELF

いやいや、その2つのメソッドやってることほとんど一緒じゃん!コピペコードじゃん!コピペやめてー!ってよく有りますよね。。。

DRYの法則は常に意識したいところです。

8. バージョン管理されないGemfile

RubyといえばGemfile。どのFrameworkを使ってても使ってなくても割りと使うGemfile。こんな風にgemのバージョンが指定されてない(&Gemfile.lockがない)と、開発者の環境ごとに差異が出て開発に影響が出まくります。

rubyの書き方、バージョン管理されないGemfile_1

マイナーアップデートだけ許可しますよ〜って書いてみたり、

rubyの書き方、バージョン管理されないGemfile_2

このバージョンだけ!って書いてみたり、して欲しいですよね。

rubyの書き方、バージョン管理されないGemfile_3

RubyやRailsのバージョンも指定出来るのでGemfile凄いです。
(Gemfileに従うRVMやrbenvが凄いとも言えます)

9. ミススペル

rubyの書き方、ミススペル

priciengじゃなくてpricingでしょ!
しかもこのメソッドあちこちから呼び出されてるし!

みたいなのも時々ありますよね。OSSとかだと見かけないですが、呼びだそうと思ってメソッド名叩いたらメソッドが見つからない。コードを読んでみたらモデル側のメソッド名がミススペル。みたいな。

イラッとを見つけたら?

コードにイラッとしたら、まずは今後の再発防止策を打つのが良いと思います。宣伝で恐縮ですが、SideCIがこんなイラッとコードの再発防止にオススメです。

white space, メソッドチェーン, unused_method あたりはSideCIで検出、検出したら即座にGitHubコメントなどでお知らせします。

既に発生しているイラッとコードのいくつかは コーディング規約をチェックするRubocopとPHP_CodeSniffer でご紹介させて頂いたRubocopなどで、autofixして一網打尽にすることも可能です。

イラッとコードを死滅させましょう!そして、再発を防止しましょう!

ps. プログラマじゃない方も、美意識?が低いプログラマが書いたコードは美意識が高いプログラマの気力を削ぐので、ぜひ直す時間をプリーズです。