Defining classes using full name vs wrapping them inside modules

In Ruby, we can write classes inside modules. We usually do this to have classes namespaced to the module, so we don't risk two different classes having the same name. This is important since Ruby won't complain about re-defining a class, it would just open it and add new methods to it.

We could write classes using their full name, like this:

```ruby
class Pokemon::Game::SpecialAttack < Pokemon::Game::Attack
  # ...
end
```

or, we could wrap the whole thing using modules, like this:

```ruby
module Pokemon
  module Game
    class SpecialAttack < Attack # Ruby looks for SpecialAttack inside Pokemon::Game automatically!
      # ...
    end
  end
end
```

Both methods work the same, except the one above can only reference `Attack` using its whole name. On the other hand, it looks somewhat easier to read than nesting modules inside other modules. Which style do you prefer?

kevin-perez
March 4, 2022
