- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
module AuthenticatedSystem
protected
def logged_in?
!!current_user
end
def current_user
@current_user ||= login_from_session unless @current_user == false
@current_user
end
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−96
module AuthenticatedSystem
protected
def logged_in?
!!current_user
end
def current_user
@current_user ||= login_from_session unless @current_user == false
@current_user
end
guest 12.08.2011 18:47 # 0
guest 12.08.2011 20:26 # 0
логика !!current_user на руби особенно ущербна, с тем же успехом можно возвращать тупо current_user, т.к. все равно че угодно кроме nil и false сойдет за true в булевом контексте
однако, @current_user ||= login_from_session unless @current_user == false, имеет право на жизнь, но только в случае если login_from_session возвращает false как флаг ошибки или вроде того ( си стайл епта )
то есть код current_user может быть не говном - но только в случае, если код login_from_session таки им является
говно порождает говно, однако
tir 12.08.2011 22:20 # 0
nil && true вернет nil, а не false. А вот это уже далеко не всегда желательно
guest 13.08.2011 08:12 # 0
если же тупо проверять something в булевом контексте ( if; unless ), то разницы между nil и false никакой нет
в данном случае, скорее всего, имеет место быть "оптимизация", чтобы не дергать login_from_session лишний раз после фейла оного, но это я тоже считаю говном, т.к. гораздо логичнее использование какого-нибудь AnonymousUser
Fai 13.08.2011 12:00 # −1
guest 29.08.2011 23:30 # 0
akostrikov 22.07.2013 12:00 # 0
И всё обернуть if-ами. В case-е.