Sha256: f442395623e02e9cf83e9b8a062ed02d7457f9edcbaf7760196b3cabae883048

Contents?: true

Size: 1.09 KB

Versions: 17

Compression:

Stored size: 1.09 KB

Contents

# Class Variable

## Introduction

Class variables form part of the global runtime state, and as such make it easy for one part of the system to accidentally or inadvertently depend on another part of the system. So the system becomes more prone to problems where changing something over here breaks something over there. In particular, class variables can make it hard to set up tests (because the context of the test includes all global state).

For a detailed explanation, check out [this article](http://4thmouse.com/index.php/2011/03/20/why-class-variables-in-ruby-are-a-bad-idea/)

## Example

Given

```Ruby
class Dummy
  @@class_variable = :whatever
end
```

Reek would emit the following warning:

```
reek test.rb

test.rb -- 1 warning:
  [2]:Dummy declares the class variable @@class_variable (ClassVariable)
```

## Getting rid of the smell

You can use class-instance variable to mitigate the problem (as also suggested in the linked article above):

```Ruby
class Dummy
  @class_variable = :whatever
end
```

##  Configuration

`Class Variable` supports the [Basic Smell Options](Basic-Smell-Options.md).

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
reek-4.0.1 docs/Class-Variable.md
reek-4.0.0 docs/Class-Variable.md
reek-4.0.0.pre1 docs/Class-Variable.md
reek-3.11 docs/Class-Variable.md
reek-3.10.2 docs/Class-Variable.md
reek-3.10.1 docs/Class-Variable.md
reek-3.10.0 docs/Class-Variable.md
reek-3.9.1 docs/Class-Variable.md
reek-3.9.0 docs/Class-Variable.md
reek-3.8.3 docs/Class-Variable.md
reek-3.8.2 docs/Class-Variable.md
reek-3.8.1 docs/Class-Variable.md
reek-3.8.0 docs/Class-Variable.md
reek-3.7.1 docs/Class-Variable.md
reek-3.7.0 docs/Class-Variable.md
reek-3.6.1 docs/Class-Variable.md
reek-3.6.0 docs/Class-Variable.md