Приклади рефакторингу у Ruby

Розглянемо простий приклад рефакторингу на мові Ruby. Припустимо, у нас є клас Person , який має метод для визначення статусу особи в залежності від її віку. Почнемо з непокращеного коду:

class Person
  attr_accessor :name, :age

  def initialize(name, age)
    @name = name
    @age = age
  end

  def status
    if age < 18
      "Молодша особа"
    elsif age >= 18 && age < 65
      "Доросла особа"
    else
      "Старша особа"
    end
  end
end

Цей код функціональний, але його можна поліпшити через рефакторинг. Ми можемо використати синтаксис “case” для зроблення його більш зрозумілим та компактним:

class Person
  attr_accessor :name, :age

  def initialize(name, age)
    @name = name
    @age = age
  end

  def status
    case age
    when 0..17
      "Молодша особа"
    when 18..64
      "Доросла особа"
    else
      "Старша особа"
    end
  end
end

Цей варіант використовує конструкцію case для заміни вкладених if і elsif. Він робить код менш громіздким та більш читабельним, особливо коли в майбутньому можуть з’явитися нові категорії віку.

Рефакторинг допомагає зберігати функціональність незмінною, але робить код чистішим та більш зрозумілим.