Решение на Пета задача от Емил Гоцев

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

Към профила на Емил Гоцев

Код

REPOSITORY = 'https://github.com/egotsev/ruby-retrospective-2'
# 20 неща, които съм научил:
# 1. Използването на self в тялото на класа е излишно освен в няколко случая като например self.class или за създаване на класов метод.
# 2. Научих как по удобен начин да използвам Range#select вместо да създавам "ръчно" нов масив и да добавям в него елементи при дадено условие.
# 3. Научих как да използвам Enumerable#map за обхождане и манипулация на елементите на колекция, вместо да създавам нова и да добавям елементи в нея обхождайки старата с #each.
# 4. Mетода Enumerable#group_by e удобен за създаване на хеш от масив.
# 5. Методите не трябва да връщат обекти с каквито и да било недокументирани свойства.
# 6. Kолко пъти един елемент се съдържа в масив може да се провери много лесно с Array#count
# 7. Не винаги е добра идея да се използва attr_accessor. Макар че е кратко, е възможно да издава повече от необходимото вътрешната имплементация. В някои случаи е по-подходящо да се използва само attr_reader.
# 8. Обектно-ориентираният подход не винаги е най-подходящ - функционалният подход често пъти е по-прост и елегантен. Функционалният е по-подходящ при добавяне на повече функции, докато обектно-ориентираният - при добавяне на повече класове.
# 9. Мога да подавам символи като аргументи на функция, които да се конвертират към Proc.
# 10. Конструкторът трябва да е смислен, съобразен с целта на обекта, а не просто създаващ например празен списък.
# 11. Името на класа може да се изпуска при извикване на new в класов метод.
# 12. Инициализацията на 2 и повече променливи може да става на един ред.
# 13. Блокът подаден на един метод може да се вземе като параметър &block.
# 14. Скобите се изпускат, където е възможно.
# 15. Поставянето на повече празни символи с цел нещата да изглеждат по-подредени е добра идея.
# 16. Трябва да се пише, колкото се може по-DRY код. Например в йерархия от класове, повтарящ се код да се изнася в родителя.
# 17. Лоша идея е да се използва константа за често използван обект, тъй като константите в Ruby могат да бъдат променяни.
# 18. Регулярните изрази могат да се интерполират.
# 19. Често използвани обекти, които не се мутират, е добре да се изнасят като константи в модул/клас.
# 20. Regexp#=== връща boolean

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

Емил обнови решението на 27.12.2012 11:06 (преди около 12 години)

+REPOSITORY = 'http://github.com/egotsev/ruby-retrospecive-2'
+# 20 неща, които съм научил:
+# 1. Използването на self в тялото на класа е излишно освен в няколко случая като например self.class или за създаване на класов метод.
+# 2. Научих как по удобен начин да използвам Range#select вместо да създавам "ръчно" нов масив и да добавям в него елементи при дадено условие.
+# 3. Научих как да използвам Enumerable#map за обхождане и манипулация на елементите на колекция, вместо да създавам нова и да добавям елементи в нея обхождайки старата с #each.
+# 4. Използвайки метода Enumerable#group_by, Hash#group_values се имплементира на един ред.
+# 5. Методите не трябва да връщат обекти с каквито и да било недокументирани свойства.
+# 6. Kолко пъти един елемент се съдържа в масив може да се провери много лесно с Array#count
+# 7. Не винаги е добра идея да се използва attr_accessor. Макар че е кратко, е възможно да издава повече от необходимото вътрешната имплементация. В някои случаи е по-подходящо да се използва само attr_reader.
+# 8. Обектно-ориентираният подход не винаги е най-подходящ - функционалният подход често пъти е по-прост и елегантен.
+# 9. Мога да подавам символи като аргументи на функция, които да се конвертират към Proc.
+# 10. Името на класа може да се изпуска при извикване на new в класов метод.
+# 11. Инициализацията на 2 и повече променливи може да става на един ред.
+# 12. Скобите се изпускат, където е възможно.
+# 13. Поставянето на повече празни символи с цел нещата да изглеждат по-подредени е добра идея.
+# 14. Трябва да се пише, колкото се може по-DRY код. Например в йерархия от класове, повтарящ се код да се изнася в родителя.
+# 15. Регулярните изрази могат да се интерполират.
+# 16. Често използвани обекти, които не се мутират, е добре да се изнасят като константа в модул/клас.
+# 17. Regexp#=== връща boolean
+#
+#
+#

Емил обнови решението на 29.12.2012 18:42 (преди около 12 години)

-REPOSITORY = 'http://github.com/egotsev/ruby-retrospecive-2'
+REPOSITORY = 'https://github.com/egotsev/ruby-retrospective-2'
# 20 неща, които съм научил:
# 1. Използването на self в тялото на класа е излишно освен в няколко случая като например self.class или за създаване на класов метод.
# 2. Научих как по удобен начин да използвам Range#select вместо да създавам "ръчно" нов масив и да добавям в него елементи при дадено условие.
# 3. Научих как да използвам Enumerable#map за обхождане и манипулация на елементите на колекция, вместо да създавам нова и да добавям елементи в нея обхождайки старата с #each.
-# 4. Използвайки метода Enumerable#group_by, Hash#group_values се имплементира на един ред.
+# 4. Mетода Enumerable#group_by e удобен за създаване на хеш от масив.
# 5. Методите не трябва да връщат обекти с каквито и да било недокументирани свойства.
# 6. Kолко пъти един елемент се съдържа в масив може да се провери много лесно с Array#count
# 7. Не винаги е добра идея да се използва attr_accessor. Макар че е кратко, е възможно да издава повече от необходимото вътрешната имплементация. В някои случаи е по-подходящо да се използва само attr_reader.
-# 8. Обектно-ориентираният подход не винаги е най-подходящ - функционалният подход често пъти е по-прост и елегантен.
+# 8. Обектно-ориентираният подход не винаги е най-подходящ - функционалният подход често пъти е по-прост и елегантен. Функционалният е по-подходящ при добавяне на повече функции, докато обектно-ориентираният - при добавяне на повече класове.
# 9. Мога да подавам символи като аргументи на функция, които да се конвертират към Proc.
-# 10. Името на класа може да се изпуска при извикване на new в класов метод.
-# 11. Инициализацията на 2 и повече променливи може да става на един ред.
+# 10. Конструкторът трябва да е смислен, съобразен с целта на обекта, а не просто създаващ например празен списък.
-# 12. Скобите се изпускат, където е възможно.
+# 11. Името на класа може да се изпуска при извикване на new в класов метод.
-# 13. Поставянето на повече празни символи с цел нещата да изглеждат по-подредени е добра идея.
+# 12. Инициализацията на 2 и повече променливи може да става на един ред.
-# 14. Трябва да се пише, колкото се може по-DRY код. Например в йерархия от класове, повтарящ се код да се изнася в родителя.
+# 13. Блокът подаден на един метод може да се вземе като параметър &block.
-# 15. Регулярните изрази могат да се интерполират.
+# 14. Скобите се изпускат, където е възможно.
-# 16. Често използвани обекти, които не се мутират, е добре да се изнасят като константа в модул/клас.
+# 15. Поставянето на повече празни символи с цел нещата да изглеждат по-подредени е добра идея.
-# 17. Regexp#=== връща boolean
+# 16. Трябва да се пише, колкото се може по-DRY код. Например в йерархия от класове, повтарящ се код да се изнася в родителя.
-#
+# 17. Лоша идея е да се използва константа за често използван обект, тъй като константите в Ruby могат да бъдат променяни.
-#
+# 18. Регулярните изрази могат да се интерполират.
-#
+# 19. Често използвани обекти, които не се мутират, е добре да се изнасят като константи в модул/клас.
+# 20. Regexp#=== връща boolean