Book Image

Polished Ruby Programming

By : Jeremy Evans
Book Image

Polished Ruby Programming

By: Jeremy Evans

Overview of this book

Anyone striving to become an expert Ruby programmer needs to be able to write maintainable applications. Polished Ruby Programming will help you get better at designing scalable and robust Ruby programs, so that no matter how big the codebase grows, maintaining it will be a breeze. This book takes you on a journey through implementation approaches for many common programming situations, the trade-offs inherent in each approach, and why you may choose to use different approaches in different situations. You'll start by refreshing Ruby fundamentals, such as correctly using core classes, class and method design, variable usage, error handling, and code formatting. Then you'll move on to higher-level programming principles, such as library design, use of metaprogramming and domain-specific languages, and refactoring. Finally, you'll learn principles specific to web application development, such as how to choose a database and web framework, and how to use advanced security features. By the end of this Ruby programming book, you’ll be a well rounded web developer with a deep understanding of Ruby. While most code examples and principles discussed in the book apply to all Ruby versions, some examples and principles are specific to Ruby 3.0, the latest release at the time of publication.
Table of Contents (23 chapters)
1
Section 1: Fundamental Ruby Programming Principles
8
Section 2: Ruby Library Programming Principles
17
Section 3: Ruby Web Programming Principles

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...