Core::Endpoint::BasicHandler::Handlers has no descriptive comment Open
module Core::Endpoint::BasicHandler::Handlers
- Read upRead up
- Exclude checks
Classes and modules are the units of reuse and release. It is therefore considered good practice to annotate every class and module with a brief comment outlining its responsibilities.
Example
Given
class Dummy
# Do things...
end
Reek would emit the following warning:
test.rb -- 1 warning:
[1]:Dummy has no descriptive comment (IrresponsibleModule)
Fixing this is simple - just an explaining comment:
# The Dummy class is responsible for ...
class Dummy
# Do things...
end
Core::Endpoint::BasicHandler::Handlers has initialize method Open
module Core::Endpoint::BasicHandler::Handlers
- Read upRead up
- Exclude checks
A module is usually a mixin, so when an #initialize
method is present it is
hard to tell initialization order and parameters so having #initialize
in a module is usually a bad idea.
Example
The Foo
module below contains a method initialize
. Although class B
inherits from A
, the inclusion of Foo
stops A#initialize
from being called.
class A
def initialize(a)
@a = a
end
end
module Foo
def initialize(foo)
@foo = foo
end
end
class B < A
include Foo
def initialize(b)
super('bar')
@b = b
end
end
A simple solution is to rename Foo#initialize
and call that method by name:
module Foo
def setup_foo_module(foo)
@foo = foo
end
end
class B < A
include Foo
def initialize(b)
super 'bar'
setup_foo_module('foo')
@b = b
end
end
Core::Endpoint::BasicHandler::Handlers#handler_for performs a nil-check Open
return self if segment.nil?
- Read upRead up
- Exclude checks
A NilCheck
is a type check. Failures of NilCheck
violate the "tell, don't ask" principle.
Additionally, type checks often mask bigger problems in your source code like not using OOP and / or polymorphism when you should.
Example
Given
class Klass
def nil_checker(argument)
if argument.nil?
puts "argument isn't nil!"
end
end
end
Reek would emit the following warning:
test.rb -- 1 warning:
[3]:Klass#nil_checker performs a nil-check. (NilCheck)