LoginSignup
0
0

More than 1 year has passed since last update.

rubocopからの指摘と対応メモ(備忘録)

Last updated at Posted at 2023-04-23

はじめに

  • 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の指摘どおり、いつか修正していけば、読みやすいメンテナンスのしやすいものに近づけるのかも。
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0