Use self to define class methods

Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel, n'hésitez pas à nous contacter.

Metadata

ID: ruby-code-style/class-methods

Language: Ruby

Severity: Info

Category: Best Practices

Description

In Ruby, it is a good practice to use self to define class methods. This is because self inside a class or module definition refers to the class or module itself. Thus, when you define a method with self, you’re actually defining a class method.

Using self is important for a couple of reasons. First, it makes your code more readable and easier to understand. When someone else reads your code, they can immediately understand that the method is a class method. Second, it prevents potential conflicts with instance methods that have the same name.

To avoid violations of this rule, always use self to define class methods. For example, instead of writing def ClassName.method_name, you should write def self.method_name. You can also use the class << self syntax to define multiple class methods at once. This syntax opens up the class’s singleton class, which is where Ruby stores class methods. This can make your code cleaner and more organized, especially when you have many class methods.

For example:

class MyClass
  class << self
    def first_method
      # code
    end

    def second_method
      # code
    end
  end
end

In this example, first_method and second_method are both class methods.

Non-Compliant Code Examples

class TestClass
  def TestClass.some_method
  end
end

Compliant Code Examples

class TestClass
  def self.some_other_method
  end
end
  class << self
    def first_method
    end

    def second_method_etc
    end
  end
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis