Решение на Първа задача от Михаил Жеков
Резултати
- 6 точки от тестове
- 0 бонус точки
- 6 точки общо
- 8 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
........ Finished in 0.00737 seconds 8 examples, 0 failures
История (2 версии и 2 коментара)
Михаил обнови решението на 15.10.2012 12:08 (преди около 12 години)
Като цяло едно не лошо решение. Имам все пак малко коментари:
Празните редове са хубаво нещо. Те ни помагат да четем по-лесно програмите. Например добра практика е преди return от метод (явен или не) да има празен ред, както и между методи.
За предпочитане е да ползваш
2.upto(self.abs)
вместо(2..self.abs)
. Най-вече заради скобите.-
Вероятно е можело по-хубаво да се получи следния код:
result = [] (2..self.abs).each do |i| result<<i if i.prime? and (self % i) == 0 end
ако беше използвал select
. Например 2.upto(self.abs).select(&:prime)
. Това е същото като 2.upto(self.abs).select { |number| number.primer? }
, но малко по-красиво като код.
Добре е да си кръщаваш променливите по по-говорящ начин от i.
- В
fizzbuzz
може да ползваш map вместо да мутираш. Така е прието и ще е по-лесно четимо.
Благодаря за забележките по задачата. i-то забравих да го променя, понеже в началото написах задачата с for, а там винаги използвам i, но след това погледнах в лекциите, че е много лоша практика и го премахнах :)