Use instance_of? for class comparison

このページは日本語には対応しておりません。随時翻訳に取り組んでいます。翻訳に関してご質問やご意見ございましたら、お気軽にご連絡ください。

Metadata

ID: ruby-best-practices/class-comparison

Language: Ruby

Severity: Notice

Category: Best Practices

Description

In Ruby, it is recommended to use the instance_of? method for class comparison. This is because instance_of? only returns true if the object is an instance of that exact class, not a subclass. The method provides a strict way of checking an object’s class, which helps in maintaining the integrity of the code.

Using other methods such as something.class == Date or something.class.equal?(Date) are not considered good coding practice. These methods could lead to unwanted behavior, particularly if the object’s class is a subclass of the specified class.

To adhere to this rule, always use something.instance_of?(Date) when you need to check if an object is an instance of a specific class. This ensures the object is exactly an instance of the class, not a subclass, providing more accurate and reliable results. This practice can help avoid potential bugs and make your code more robust and easier to understand.

Non-Compliant Code Examples

something.class == Date
something.class.equal?(Date)
something.class.eql?(Date)
something.class.name == 'Date'
something.class.name == "Date"

Compliant Code Examples

something.instance_of?(Date)
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

PREVIEWING: may/unit-testing