Бони обнови решението на 11.10.2015 21:52 (преди около 10 години)
+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
