Understanding the consequences of using arbitrary limits
One major issue with RuboCop's default configuration is that it enables all of the cops related to metrics. By default, RuboCop complains about the following:
- Classes longer than 100 lines
- Modules longer than 100 lines
- Methods longer than 10 lines
- Blocks longer than 25 lines
- Blocks nested more than three times
- Methods with more than five parameters, including keyword parameters
Enforcing these limits will always result in worse code, not better code. In general, in this book, there are few principles stated as absolutes. This is one principle that is an absolute, so to restate it for emphasis—enforcing the previous arbitrary limits on your code will make the code worse, not better.
The argument against arbitrary limits is simple: if there was a better approach that was within the limit, it would have already been used. The argument for arbitrary limits is also simple: the programmer...