Алекс обнови решението на 10.10.2015 13:03 (преди около 9 години)
Здравей :)
Няколко бързи коментара:
- Помисли дали няма да е по-добре ако използваш
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
от функционална гледна точка, но това в случая те спира да напишеш по-добро решение.
Все още имаш възможност да подобриш кода и да ни изпратиш ново решение :)