はじめに
- Rubyを学習し始めて、まだ1か月。
Rubyのコーディング規約に則った記述かどうかのチェックをしてくれるrubocopの存在を知り、早速使ってみたものの、とんでもない数の指摘を受けてしまう結果に・・・。 - ちょっとしたスペルミスから、よくわからない改行の指摘までいろいろ。その都度、調べたり、指摘に沿って直したりしたことをメモとして残しておく。
指摘を受けた内容とその対応
-
Line is too long.
(指摘の中身)
一行が長すぎる。
(対応策)
デフォルトで文字数が決められているらしく、これを上回らないように調整。 -
Tab detected in indentation.
(指摘の中身)
インデントの中にタブが検出されました。
(対応策)
タブを半角スペースに置き換える。
インデントにタブキーを使っており、このことが、rubyのコーディング規約から
外れているので、指摘を受けたようだ。
置換でも何でも使って、一か所ずつ減らした。 -
Missing top-level documentation comment for `class XXXX`
(指摘の中身)
クラス定義の直上に、説明文(コメント)が見あたりません。
(対応策)
定義の一行上にコメントを入れる。
例.rb
# ここにコメントを入れておけば、ひとまず回避
class Sample(i, j)
@i = i
@j = j
- Useless assignment to variable
(指摘の中身)
未使用の変数がある。
(対応策)
未使用でもないのにと随分悩んでいたが、調べてみると
戻値を明示しておくことが必要だったらしい。
例.rb
# 実際指摘を受けたコードを簡素化
# rtnについての指摘
def sample(str)
if str = 'no'
rtn += ' life'
else
rtn += ' money'
end
rtn # <==ここの記述すると回避した。
end
- Cyclomatic complexity for XXXX is too high
(指摘の中身)
分岐などの記述が多すぎる(複雑すぎる)
(対応策)
1. メソッドなどにまとめて、切り出す。
2. if文などの条件を見直す。
などが挙げられる。とにかく、シンプルにすることが大事。
見やすさ・読みやすさにも通じる。
そもそも、コードを書く前にしっかりとした設計してあれば、指摘を受けないのではと思い、反省。
- Carriage return character missing.
改行コードにまつわる指摘だと思われるのですが、どうやっても減らなかった。
色々聞いてまわってみると、記述するときの改行コードを'CRLF'から'LF'に変えると良いとのことで試してみたが、全部が消えるわけではなかった。
⇒ もう少し、調べてみることにする。
終わりに
- rubocopは、Rubyのコーディング規約に則った記述かどうかを見るツールであるが、この規約は読みやすく、間違えにくくするために議論を重ねて作られたものだそうで、rubocopの指摘どおり、いつか修正していけば、読みやすいメンテナンスのしやすいものに近づけるのかも。