Решение на Четвърта задача от Ивайло Сачански

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

Към профила на Ивайло Сачански

Резултати

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

Код

REPOSITORY = "https://github.com/Sachanski/ruby-retrospective-1"
#Какво научих:
# * Първа задача:
# * Не прави Hash Джаварски(Hash.new).
# * ползвай each вмест for - и без това отдолу е имплементирано #чрез each.
# * 2 спейса идентация.
# * конвенцията за методи и променливи в Руби е snake_case, не #camelCase.
# * Втора задача:
# * използвай тернарен оператор вместо грозното if-then-end.
# * методи от рода на select, map, inject изглеждат доста #приятно, когато се използват на място. Съкръщават кода и го #правят по-лесно четим.
# * Трета задача:
# * повечко класове и методи (почти) никога не вредят.
# * в първоначалното решение не бях написал принта и макар да #съм го преписал почти дословно си направих труда да погледна Kernel#sprintf(), за да разбера как работи.
# * използвай Duck Typing - ТОВА Е РУБИ, макар и за конкретната #задача да мисля, че концептуално е по-добре трите промоции да #имат общ родител...Но това може би е изкривяване от писането на #не-динамични #езици.
# * Лични наблюдения и поуки:
# * ако човек не внимава, може адски много да си омаже кода #поради гъвкъвостта на Руби. При мен това се случи докато решавах #третата задача - поради пропускането на някой и друг use-case #тръгнах да пиша #бързи dirty fix-ове. За щастие сравнително рано #осъзнах, че ще по-добре просто да разбия логиката в различни #класове.
#
#П.П. Само десетина написах понеже не искам да си изсмуквам от #пръстите и да пиша глупости. Надявам се да са достатъчни.

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

Ивайло обнови решението на 14.11.2011 01:04 (преди над 12 години)

+REPOSITORY = "https://github.com/Sachanski/ruby-retrospective-1"
+
+#Какво научих:
+# * Първа задача:
+# * Не прави Hash Джаварски(Hash.new).
+# * ползвай each вмест for - и без това отдолу е имплементирано #чрез each.
+# * 2 спейса идентация.
+# * конвенцията за методи и променливи в Руби е snake_case, не #camelCase.
+# * Втора задача:
+# * използвай тернарен оператор вместо грозното if-then-end.
+# * методи от рода на select, map, inject изглеждат доста #приятно, когато се използват на място. Съкръщават кода и го #правят по-лесно четим.
+# * Трета задача:
+# * повечко класове и методи (почти) никога не вредят.
+# * в първоначалното решение не бях написал принта и макар да #съм го преписал почти дословно си направих труда да погледна Kernel#sprintf(), за да разбера как работи.
+# * използвай Duck Typing - ТОВА Е РУБИ, макар и за конкретната #задача да мисля, че концептуално е по-добре трите промоции да #имат общ родител...Но това може би е изкривяване от писането на #не-динамични #езици.
+# * Лични наблюдения и поуки:
+# * ако човек не внимава, може адски много да си омаже кода #поради гъвкъвостта на Руби. При мен това се случи докато решавах #третата задача - поради пропускането на някой и друг use-case #тръгнах да пиша #бързи dirty fix-ове. За щастие сравнително рано #осъзнах, че ще по-добре просто да разбия логиката в различни #класове.
+#
+#П.П. Само десетина написах понеже не искам да си изсмуквам от #пръстите и да пиша глупости. Надявам се да са достатъчни.