config/contents/style/redundant_self.md
This cop checks for redundant uses of `self`.
The usage of `self` is only needed when:
* Sending a message to same object with zero arguments in
presence of a method name clash with an argument or a local
variable.
* Calling an attribute writer to prevent an local variable assignment.
Note, with using explicit self you can only send messages with public or
protected scope, you cannot send private messages this way.
Note we allow uses of `self` with operators because it would be awkward
otherwise.
### Example:
# bad
def foo(bar)
self.baz
end
# good
def foo(bar)
self.bar # Resolves name clash with the argument.
end
def foo
bar = 1
self.bar # Resolves name clash with the local variable.
end
def foo
%w[x y z].select do |bar|
self.bar == bar # Resolves name clash with argument of the block.
end
end