Решение на Първа задача от Рали Ралев

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

Към профила на Рали Ралев

Резултати

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

Код

def convert_to_bgn(sum, currency_id)
currencies = { usd: 1.7408, eur: 1.9557, gbp: 2.6415, bgn: 1.0000 }
(sum * currencies[currency_id]).round(2)
end
def compare_prices(sum, currency_id, sum_to_compare, currency_to_compare_id)
convert_to_bgn(sum, currency_id) <=>
convert_to_bgn(sum_to_compare, currency_to_compare_id)
end

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

........

Finished in 0.00678 seconds
8 examples, 0 failures

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

Рали обнови решението на 11.10.2015 23:55 (преди над 8 години)

+def convert_to_bgn(sum, currency_id)
+ currencies = { usd: 1.7408, eur: 1.9557, gbp: 2.6415, bgn: 1.0000 }
+ (sum * currencies[currency_id]).round(2)
+end
+
+def compare_prices(sum, currency_id, sum_to_compare, currency_to_compare_id)
+ convert_to_bgn(sum, currency_id) <=>
+ convert_to_bgn(sum_to_compare, currency_to_compare_id)
+end

Идейно е супер, няколко насоки за подобрение:

  • Не слагай space-ове в началото и края на hash-овете
  • currency_id ми звучи като, че ще бъде число. Няма нужда от това _id
  • С to_compare суфикса идва усещане, че двете суми не са равностойни (едната е главна, другата второстепенна). Избери имена, които импликират равнопоставеност (примерно първа сума и втора сума)
  • currencies не дава усещане за mapping. Звучи като да съдържа [:usd, :eur, :gbp, :bgn]. За щастие тук има конкретен термин - обменен курс