Алекс обнови решението на 10.10.2015 13:03 (преди около 10 години)
Здравей :)
Няколко бързи коментара:
- Помисли дали няма да е по-добре ако използваш
case ... when ...? Не сме ви го показвали, така че е напълно пожелателно. - В момента имаш доста дублиране на
(price * ...).round(2). Подсещам, че всичко е израз и връща резултат - дориifиcase. Този резултат може да бъде присвоен на променлива. - Последната проверка
elsif currency == :bgnе излишна. Защо не простоelse? Няма да подаваме невалидни аргументи, пък и в двата случая не се случва нещо очаквано ако се подаде такъв. -
expression_oneиexpression_twoне са добри имена на променливи. Не дават никаква информация за стойностите си, освен че са някакви изрази. Защо не напримерprice_one_in_bgnиprice_two_in_bgn? Всъщност според менfirst_priceзвучи по-добре отprice_one, но ще оставя на теб да прецениш. :) -
if-а за сравнението вcompare_pricesне ти трябва и ще е много по-прегледно без него. Прочети за оператора<=>. - Въпреки, че е забавно да връщаш
-42и42, предполагам това не е нещо, което би написал наистина ако трябваше да направиш подобна функция в реален проект. Защо тогава да е тук? :) Нямам против да е42от функционална гледна точка, но това в случая те спира да напишеш по-добро решение.
Все още имаш възможност да подобриш кода и да ни изпратиш ново решение :)
