Решение на Първа задача от Кристиян Първанов

Обратно към всички решения

Към профила на Кристиян Първанов

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 8 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def convert_to_bgn (price, currency)
if currency == :usd
(price * 1.7408).round(2)
elsif currency == :gbp
(price * 2.6415).round(2)
elsif currency == :eur
(price * 1.9557).round(2)
elsif currency == :bgn
(price).round(2)
end
end
def compare_prices (first_price, first_currency, second_price, second_currency)
first = convert_to_bgn(first_price, first_currency)
second = convert_to_bgn(second_price, second_currency)
first - second
end

Лог от изпълнението

........

Finished in 0.00633 seconds
8 examples, 0 failures

История (1 версия и 1 коментар)

Кристиян обнови решението на 11.10.2015 22:35 (преди над 8 години)

+def convert_to_bgn (price, currency)
+ if currency == :usd
+ (price * 1.7408).round(2)
+ elsif currency == :gbp
+ (price * 2.6415).round(2)
+ elsif currency == :eur
+ (price * 1.9557).round(2)
+ elsif currency == :bgn
+ (price).round(2)
+ end
+end
+
+def compare_prices (first_price, first_currency, second_price, second_currency)
+ first = convert_to_bgn(first_price, first_currency)
+ second = convert_to_bgn(second_price, second_currency)
+ first - second
+end

Като цяло добре. Няколко забележки:

  • Индентирай с два space-a. Не слагай space между имената на методите и скобите с аргументите
  • Изглежда имаш малко повторения с тази редица от if-else-и. За да го DRY-неш може да погледнеш case ("switch"-ът в Ruby). Ако искаш да го супер DRY-неш може да помислиш за решение с hash
  • Имената ти са наред, като изключим first и second. Опитай се да измислиш по-добри. Каква е разликата между first_price и first? Че едното е първата цена, а второто е само първо? Или че второто също е първата цена, само че гарантирано в лева?