Skip to content

Instantly share code, notes, and snippets.

@taher435
Last active August 16, 2016 10:53
Show Gist options
  • Save taher435/0fc7eb4233d9529080ddb45b5b3f6f19 to your computer and use it in GitHub Desktop.
Save taher435/0fc7eb4233d9529080ddb45b5b3f6f19 to your computer and use it in GitHub Desktop.
Clean Code Examples - Ruby
# This is an example of bad code
class Employee
attr_accessor :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
end
def calculate_pay(employee)
case employee.type
when HOURLY
return calculate_hourly_pay(employee)
when SALARIED
return calculate_salaried_pay(employee)
else
raise InvalidEmployeeError.new("employee type should be hourly or salaried")
end
end
employee = Employee.new("Taher", "D")
employee.type = SALARIED
pay = calculate_pay(employee)
# This how the bad code would be converted good code
def HourlyEmployee < Employee
def initialize(first_name, last_name)
super(first_name, last_name)
end
def calculate_pay
# logic here
end
end
def SalariedEmployee < Employee
def initialize(first_name, last_name)
super(first_name, last_name)
end
def calculate_pay
# logic here
end
end
salaried_employee = SalariedEmployee.new("Taher", "D")
salaried_employee.calculate_pay
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment