why-classes is a linter and refactoring tool inspired by Dave Thomas's talk on the over-use of classes in Ruby. It scans a Ruby/Rails codebase (or a single file) for "class smells" -- stateless singleton-method classes, function buckets, invalid initial state, fat-base inheritance, and data buckets -- and reports each one with a concrete refactoring suggestion toward modules, composition, Struct or Data. The mechanically-safe refactorings (notably data bucket -> Struct/Data) can be applied automatically with --fix.
Required Ruby Version
>= 3.2.0
Authors
Gabriel Quaresma
Pushed by
SHA 256 checksum
Provenance
Source Commit
Build File