Reader small image

You're reading from  Layered Design for Ruby on Rails Applications

Product typeBook
Published inAug 2023
Reading LevelIntermediate
PublisherPackt
ISBN-139781801813785
Edition1st Edition
Languages
Right arrow
Author (1)
Vladimir Dementyev
Vladimir Dementyev
author image
Vladimir Dementyev

Vladimir Dementyev has been working on web applications for more than 10 years and launched his first Ruby on Rails project back in 2014. Since then, he has been working on a dozen of Rails web applications, used by hundreds of millions of customers, monolithic or component-based, following the Rails way or trying to swim against the current. He has been an active member of Rails open-source community since 2015, becoming a regular Rails contributor, a RailsConf speaker, and the author of dozens of gems, including AnyCable, TestProf, and Action Policy to name a few. For his work on the Ruby Next project, the author got the Fukuoka Ruby Award for outstanding performance in 2021. Currently, he's leading the backend developers' team at Evil Martians, helping dozens of web projects around the world build better software.
Read more about Vladimir Dementyev

Right arrow

Seeking God objects

Active Record is the largest part of Rails; its code base contains twice as many files (over 1,000) and lines of code (over 100,000) as the second largest, which is Action Pack. With that amount of machinery under the hood, it provides dozens of APIs for developers to use in their applications. As a result, models inherited from Active Record tend to carry many responsibilities, which we were trying to enumerate in the previous sections of this chapter. Such over-responsible Ruby classes are usually referred to as God objects.

From the code perspective, a lot of responsibility means a lot of lines of source code. The number of lines itself can’t be considered an indicator of unhealthy code. We need better metrics to identify good candidates for refactoring in our code base. The combination of churn and complexity has been proven to be such indicators.

Churn describes how often a given file has been modified. A high change rate could indicate a code...

lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Layered Design for Ruby on Rails Applications
Published in: Aug 2023Publisher: PacktISBN-13: 9781801813785

Author (1)

author image
Vladimir Dementyev

Vladimir Dementyev has been working on web applications for more than 10 years and launched his first Ruby on Rails project back in 2014. Since then, he has been working on a dozen of Rails web applications, used by hundreds of millions of customers, monolithic or component-based, following the Rails way or trying to swim against the current. He has been an active member of Rails open-source community since 2015, becoming a regular Rails contributor, a RailsConf speaker, and the author of dozens of gems, including AnyCable, TestProf, and Action Policy to name a few. For his work on the Ruby Next project, the author got the Fukuoka Ruby Award for outstanding performance in 2021. Currently, he's leading the backend developers' team at Evil Martians, helping dozens of web projects around the world build better software.
Read more about Vladimir Dementyev