This rule pertains to the practice of avoiding unnecessary disjunctive (or conditional) assignments in class constructors in Ruby. A disjunctive assignment, denoted by ||=, is a shorthand way of saying “if this variable is nil or false, assign it this value; otherwise, leave it as it is.” While this can be a useful tool in some instances, using it in a class constructor can lead to confusing and unexpected behavior.
The main reason to avoid this practice is that it can lead to unexpected values for instance variables. In the non-compliant code example, if @foo somehow has a value before the constructor is called, that value will be preserved instead of being set to 42 as might be expected. This can make debugging more difficult and lead to subtle, hard-to-find bugs.
To avoid this issue, assign the value directly in the constructor, as shown in the compliant code example. This ensures that the instance variable will always have the expected value when the constructor is finished. It’s a small change, but it can make your code much easier to understand and debug.
Non-Compliant Code Examples
definitialize@foo||=42end
Compliant Code Examples
definitialize@foo=42end
원활한 통합. Datadog Code Security를 경험해 보세요
Datadog Code Security
이 규칙을 사용해 Datadog Code Security로 코드를 분석하세요
규칙 사용 방법
1
2
rulesets:- ruby-best-practices # Rules to enforce Ruby best practices.
리포지토리 루트에 위의 내용을 포함하는 static-analysis.datadog.yml을 만듭니다
무료 IDE 플러그인을 사용하거나 CI 파이프라인에 Code Security 검사를 추가합니다