- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
ID: ruby-best-practices/no-extend-struct-new
Language: Ruby
Severity: Notice
Category: Best Practices
The rule, “You should not inherit from Struct.new
”, is important because it can lead to unexpected behavior and bugs in your code. Struct.new
creates a new Class, and if you inherit from it, you’re creating a subclass of a dynamically generated Class. This can lead to confusing code and can make debugging difficult.
Instead of inheriting from Struct.new
, you should assign the result of Struct.new
to a constant. This will create a new Class with the provided attributes, and you can add methods to it just like any other Class. This approach is clearer and less prone to errors.
To avoid this, use Struct.new
to create a new class and assign it to a constant. For example, Foo = Struct.new(:foo, :bar)
creates a new Class with two attributes, foo
and bar
, and assigns it to the constant Foo
. This is a far safer and more predictable way to use Struct.new
in your code.
class Foo < Struct.new(:foo, :bar)
end
class Foo < Struct.new(:foo, :bar)
def thing
end
end
Foo = Struct.new(:foo, :bar)
|
|
For more information, please read the Code Analysis documentation
Identify code vulnerabilities directly in yourVS Code editor
Identify code vulnerabilities directly inJetBrains products