---
title: No Complex Logic in Constructor
impact: LOW
impactDescription: makes objects easy to instantiate and test
tags: constructor, initialization, testability, quality
---

## No Complex Logic in Constructor

The `initialize` method should only set up initial state. Avoid performing computations, database queries, or network calls during object construction.

**Incorrect (complex initialize):**

```ruby
class UserProfile
  def initialize(user_id)
    @user = User.find(user_id) # DB query in constructor
    @stats = RemoteApiService.fetch_stats(user_id) # Network call
  end
end
```

**Correct (simple initialize):**

```ruby
class UserProfile
  def initialize(user, stats)
    @user = user
    @stats = stats
  end

  # Use a factory method or dependency injection
  def self.build(user_id)
    user = User.find(user_id)
    stats = RemoteApiService.fetch_stats(user_id)
    new(user, stats)
  end
end
```

**Tools:** PR review
---
