class RuboCop::Cop::Sorbet::ConstantsFromStrings

{ “User” => User }.fetch(class_name)
# good
end
raise ArgumentError
else
User
when “User”
case class_name
# good
const_get(class_name)
# bad
constants.detect { |c| c.name == “User” }
# bad
class_name.constantize
# bad
@example
expresses which values the constant can have.
more IDE-friendly, and more predictable. It leads to code that clearly
The goal of this cop is to make the code easier to statically analyze,
such as constantize, const_get, and constants.
This cop disallows the calls that are used to get constants fom Strings

def on_send(node)

def on_send(node)
  return unless constant_from_string?(node)
  add_offense(
    node,
    location: :selector,
    message: "Don't use `#{node.method_name}`, it makes the code harder to understand, less editor-friendly, " \
      "and impossible to analyze. Replace `#{node.method_name}` with a case/when or a hash."
  )
end