(Not really)
EVERYONE KNOWS THAT DEBUGGING IS TWICE AS HARD AS WRITING A PROGRAM IN THE FIRST PLACE. SO IF YOU'RE AS CLEVER AS YOU CAN BE WHEN YOU WRITE IT, HOW WILL YOU EVER DEBUG IT?
the three great virtues of a programmer: laziness, impatience, and hubris
(Or No Abstractions)
(Or No Tests)
(In a rails app? Never!)
(The principle of least astonishment)
(Please)
(Avoiding Primitive Obsession)
def fetch_invoices(account_id)
response = Invoice::Fetcher.new(account_id).get_all
if response.status_code == OKAY
{
status: OKAY,
invoices: response.data
}
else
{
status: ERROR,
invoices: nil,
error: "Couldn't fetch"
}
end
enddef fetch_invoices(account_id)
response = Invoice::Fetcher.new(account_id).get_all
if response.status_code == OKAY
InvoiceOkayResponse.new(response.data)
else
InvoiceErrorResponse.new(response.error)
end
enddef fetch_invoices(account_id)
response = Invoice::Fetcher.new(account_id).get_all
InvoiceResponder.process(response)
end(Avoid shared mutable state)
def prepare_events
if events_exist?
@presenter_one = @next_event.main.presenter_one.last_name
@presenter_two = @next_event.main.presenter_two.last_name
elsif @next_event.try(:title_tag_line)
presenters = @next_event.tag_line.split(tag_line_del)
@presenter_one = presenters.first
@presenter_two = presenters.last
else
@presenter_one = @prev_event.main.presenter_one.last_name
@presenter_two = @prev_event.main.presenter_two.last_name
end
end def prepare_events(next_event, prev_event = nil)
if events_exist?
[ next_event.main.presenter_one.last_name,
next_event.main.presenter_two.last_name ]
elsif next_event.try(:title_tag_line)
presenters = next_event.tag_line.split(tag_line_del)
[ presenters.first,
presenters.last ]
else
[ prev_event.main.presenter_one.last_name
prev_event.main.presenter_two.last_name ]
end
end
def show
# ... some code
@presenter_one,
@presenter_two = prepare_events(@next_event, @prev_event)
end def event_presenters(next_event, prev_event = nil)
if events_exist?(next_event)
[ next_event.first_presenter, next_event.second_presenter ]
elsif next_event.try(:title_tag_line)
presenters = next_event.tag_line.split(tag_line_del)
[ presenters.first, presenters.last ]
elsif prev_event
[ prev_event.first_presenter, prev_event.second_presenter ]
end
end
before_filter :run_before
before_filter :prepare_event_page, only: [:show_without_cache, :show]
before_filter :set_events, only: [:show_without_cache, :show]
around_filter :set_visitor, only: [:show_without_cache, :show]
after_filter :run_analytics_job, if: Proc.new{|c| !@next_event.present? }
before_filter :parse_query
def show
if !@query.nil?
#...
else
#...
end
end
def show_without_cache
if @event.nil?
render text: "Not Found", status: 404
end
end
def show
public_event_display do |events, visitor, query|
if query
#...
else
#...
end
end
end
def show_without_cache
public_event_display do |events, _, _|
if events.empty?
render text: "Not Found", status: 404
end
end
end
private
def public_event_display
run_before
prepare_evnet_page
events = get_events
visitor = get_visitor
query = parse_query(params)
yield(events, visitor, query)
AnalyticsJob.perform(visitor, query) if has_next_event?(events)
end def show
public_event_display do |events, visitor, query|
if query
#...
else
#...
end
end
end
def show_without_cache
public_event_display do |events, _, _|
if events.empty?
render text: "Not Found", status: 404
end
end
end
private
def public_event_display
run_before
prepare_evnet_page
events = get_events
visitor = get_visitor
query = parse_query(params)
yield(events, visitor, query)
AnalyticsJob.perform(visitor, query) if has_next_event?(events)
end