Created
February 7, 2013 02:07
-
-
Save jonahoffline/4727808 to your computer and use it in GitHub Desktop.
Refactoring examples using code taken from SpamBitch.
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
# Original | |
class Spammer | |
def initialize | |
@random_telephones = Proc.new { "787-#{rand(000..999)}-#{rand(0000..9999)}" } | |
@sms_telephones = Proc.new { "787#{rand(000..999)}#{rand(0000..9999)}" } | |
end | |
def telephone | |
@random_telephones.call | |
end | |
def sms(carrier) | |
case carrier | |
when 'claro' | |
"#{@sms_telephones.call}@vtexto.com" | |
when 'att' | |
"#{@sms_telephones.call}@txt.att.net" | |
when 'tmobile' | |
"#{@sms_telephones.call}@sms.tmobile.net" | |
else | |
raise "Carrier not Supported" | |
end | |
end | |
end | |
# Refactor 1 | |
module SpamBitch | |
module Phone | |
def self.telephone | |
"787-#{rand(000..999)}-#{rand(0000..9999)}" | |
end | |
def self.sms(carrier='') | |
gateway = case carrier | |
when 'claro' | |
'vtexto.com' | |
when 'att' | |
'txt.att.net' | |
when 'tmobile' | |
'sms.tmobile.net' | |
else | |
raise "Carrier not Supported" | |
end | |
"#{telephone.gsub(/-/, '')}@#{gateway}" | |
end | |
end | |
end | |
# Refactor #2 | |
module SpamBitch | |
module Phone | |
def self.carriers | |
{ claro: 'vtexto.com', att: 'txt.att.net', tmobile: 'sms.tmobile.net' } | |
end | |
def self.telephone | |
"787-#{rand(000..999)}-#{rand(0000..9999)}" | |
end | |
def self.sms(carrier='') | |
gateway = carrier.empty? ? carriers[carriers.keys[rand(carriers.length)]] : carriers[carrier] | |
"#{telephone.gsub(/-/, '')}@#{gateway}" | |
end | |
end | |
end | |
# Refactor #3 (Final version... so far.) | |
module SpamBitch | |
module Phone | |
def self.carriers | |
{ claro: 'vtexto.com', att: 'txt.att.net', tmobile: 'sms.tmobile.net' } | |
end | |
def self.random_carrier | |
carriers.keys[rand(carriers.length)] | |
end | |
def self.telephone | |
"787-#{rand(000..999)}-#{rand(0000..9999)}" | |
end | |
def self.sms(carrier='') | |
gateway = carrier.empty? ? carriers[random_carrier] : carriers[carrier] | |
"#{telephone.gsub(/-/, '')}@#{gateway}" | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment