Last active
August 16, 2016 10:53
-
-
Save taher435/0fc7eb4233d9529080ddb45b5b3f6f19 to your computer and use it in GitHub Desktop.
Clean Code Examples - Ruby
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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