Open5
【rubocopからのお叱り】まとめ

前提
- ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]
- ruby-rubocop v0.8.6

Useless method definition detected.
結論
- initializeで継承元のをそのまま継承する場合、initializeすら不要
概要
- 継承を行うとき、superとだけ記述すれば継承元のinitializeをそのまま定義できる
- しかし、superとだけ記述するならnitializeすら不要というエラー
def initialize
super
end
意訳
- 不要なメソッドがありますよ

self
detected.
Redundant 結論
- selfが不必要
概要
- そもそもselfの使用用途は下記
- インスタンスメソッド内で self はそのメソッドを呼び出したインスタンス自体を指す。
- クラスメソッド内で self はそのクラスを指す。
- クラス内で直接書かれたコード(クラス定義)において self はそのクラス自体を指す。
- 下記のコードの場合は「1」が該当する
- Rubyではインスタンスメソッド内で直接インスタンス変数にアクセスできるため、self を使わずにインスタンス変数を参照できる
# ポケモンの抽象クラス
class Pokemon
attr_accessor :name, :type1, :type2, :hit_point
def initialize(name, type1, type2, hit_point)
@name = name
@type1 = type1
@type2 = type2
@hit_point = hit_point
end
def attack
"#{self.name}のこうげき!"
end
end
意訳
- そのself、冗長や

Prefer ary[n..] over ary[n..-1]
結論
- 配列の最後の4つをこう取得していた
# bad
@last_four_items = @items[-4...-1]
- 推奨は
# prefer
@last_four_items = @items[-4...]
概要
意訳
[n..-1]よりary[n..] って取得した方がいいよ