Бони обнови решението на 11.10.2015 21:52 (преди над 9 години)
+def round(value)
+ value.round(2)
+end
+
+def convert_to_bgn(amount, currency)
+ case currency
+ when :usd
+ round(1.7408 * amount)
+ when :eur
+ round(1.9557 * amount)
+ when :gbp
+ round(2.6415 * amount)
+ when :bgn
+ round(amount)
+ end
+end
+
+def compare_prices(amount, currency, second_amount, second_currency)
+ result = convert_to_bgn(amount, currency)
+ second_result = convert_to_bgn(second_amount, second_currency)
+ result - second_result
+end
Като цяло добре. Няколко насоки за подобрение:
- Какво всъщност печелиш от
round
? Единственото, което ми хрумва е, че не повтаряш числото2
. Ако това беше целта можеше просто да запазиш резултата отcase
-a в променлива и да закръглиш нея. Ако искаш наистина да си DRY-неш решението можеш да помислиш как може да използваш hash - Избягвай
result
иvalue
като имена на променливи. Всичко е някакъв result или value. Какво всъщност крият тези променливи в контекста на решавания проблем? Използвай това за име. Напримерsecond_result
всъщност е втората цена в лева - Добре е да се стремиш към консистентност на имената. Ако имаш
second_amount
би следвало да имашfirst_amount
, не простоamount