Решение на Четвърта задача от Васил Гочев

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

Към профила на Васил Гочев

Резултати

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

Код

REPOSITORY: 'https://github.com/vassuel/ruby-retrospective-1'
# Двадесет неща, които научих
#
# 0. Въпреки грозните почти копирани решения, смятам, че научих доста от тях. Може би подходът ми е неправилен, но си избрах решения, които смятам за хубави и ги пренаписах. Нещата, които научих (in no particular order):
# 1. Използването на self в клас, когато става дума за обръщение към съответния клас, може да се изпусне на някои места.
# 2. Научих конструктора на Hash.
# 3. Писането на map(&:нещо) пред map { |елемент| елемент.нещо } . Особено се привързах към map(&:+)
# 4. string.lines вместо string.split("\n")
# 5. Операторът ^ в смисъл на логически оператор (побитово "или")
# 6. fetch за хеш - доста полезен метод, когато искаме да сетнем стойност по подразбиране на липсващ ключ.
# 7. compact - удобен за премахване на nil-ове от масив.
# 8. Като цяло използване на Enumerable - прави живота по-лесен.
# 9. Разбиване на големи методи на по-малки и по-прости, вършещи точно определено нещо.
# 10. Разбиване на класове на по-малки и използване на модули.
# 11. Дефиниране на метод [] - нямаше да се сетя.
# 12. Доста по-опростен начин за ordinalize - предното ми решение с отделен модул изглежда направо смешно.
# 13. Научих се да използвам watchr и rake - адски полезни туул-ове за дебъгване.
# 14. Старанието да се справя със skeptic наистина помага за писане на по-хубав код. Или по-грозен, на моменти.
# 15. Вече се чувствам доста по-комфортно да използвам map, select и tap.
# 16. Няколко стилистични неща, от сорта на подравняване на многоредови булеви изрази.
# 17. Избягвам да използвам мутиращи методи.
# 18. "Прехвърляне на отговорност" - например в старата ми 3-та задача бях мазал наляво и надясно между методи и класове - не беше ясно (дори за мен) кое какво и откъде използва. Когато се опитах да я преправя, се отказах.
# 19. case-a е доста по-готин, отколкото си мислех.
# 20. Като цяло може би се научих, че трябва да отделям доста повече време на писането на код - някои неща (както и тези, които пиша в момента) ги правя в последния момент, което ми пречи доста да напиша нещо интелигентно, или поне нещо смислено. Което си личи и от липсата ми на опит.

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

Васил обнови решението на 14.11.2011 16:18 (преди около 13 години)

+REPOSITORY: 'https://github.com/vassuel/ruby-retrospective-1'
+
+# Двадесет неща, които научих
+#
+# 0. Въпреки грозните почти копирани решения, смятам, че научих доста от тях. Може би подходът ми е неправилен, но си избрах решения, които смятам за хубави и ги пренаписах. Нещата, които научих (in no particular order):
+# 1. Използването на self в клас, когато става дума за обръщение към съответния клас, може да се изпусне на някои места.
+# 2. Научих конструктора на Hash.
+# 3. Писането на map(&:нещо) пред map { |елемент| елемент.нещо } . Особено се привързах към map(&:+)
+# 4. string.lines вместо string.split("\n")
+# 5. Операторът ^ в смисъл на логически оператор (побитово "или")
+# 6. fetch за хеш - доста полезен метод, когато искаме да сетнем стойност по подразбиране на липсващ ключ.
+# 7. compact - удобен за премахване на nil-ове от масив.
+# 8. Като цяло използване на Enumerable - прави живота по-лесен.
+# 9. Разбиване на големи методи на по-малки и по-прости, вършещи точно определено нещо.
+# 10. Разбиване на класове на по-малки и използване на модули.
+# 11. Дефиниране на метод [] - нямаше да се сетя.
+# 12. Доста по-опростен начин за ordinalize - предното ми решение с отделен модул изглежда направо смешно.
+# 13. Научих се да използвам watchr и rake - адски полезни туул-ове за дебъгване.
+# 14. Старанието да се справя със skeptic наистина помага за писане на по-хубав код. Или по-грозен, на моменти.
+# 15. Вече се чувствам доста по-комфортно да използвам map, select и tap.
+# 16. Няколко стилистични неща, от сорта на подравняване на многоредови булеви изрази.
+# 17. Избягвам да използвам мутиращи методи.
+# 18. "Прехвърляне на отговорност" - например в старата ми 3-та задача бях мазал наляво и надясно между методи и класове - не беше ясно (дори за мен) кое какво и откъде използва. Когато се опитах да я преправя, се отказах.
+# 19. case-a е доста по-готин, отколкото си мислех.
+# 20. Като цяло може би се научих, че трябва да отделям доста повече време на писането на код - някои неща (както и тези, които пиша в момента) ги правя в последния момент, което ми пречи доста да напиша нещо интелигентно, или поне нещо смислено. Което си личи и от липсата ми на опит.