Никола обнови решението на 26.01.2016 22:27 (преди почти 9 години)
+REPOSITORY = 'https://github.com/VazovTheGreat/ruby-retrospective-2015-2'
+
+# What did I learn
+#
+# 1. Ако не разбираш точно как работи даден фийчър(Marshal for instance), по-добре
+# не го използвай, довежда до бъгове.
+# 2. Референциите в динамични езиси, като Ruby, могат да бъдат много измамни (ie
+# довеждат до трудно откриваеми проблеми - Im looking at you, CommitObject).
+# 3. Освен неизвършване на интерполация на стрингове, единичните кавички не обработват ASCII кодове.
+# 4. Трябва да се внимава с наименованието(in general), могат да се появят много интересни
+# бъгове при shadowing на предефинирани променливи,фунции и прочие.
+# 5. Ruby не е Python, има по-добри алтернативи от ъндърскор и дъндър за контрол на методите.
+# 6. Ruby има много силен темплейт engine, няма причина да не се използва.
+# 7. Не е много разумно(никак даже) да се обфускира стринг, който ще използваш/манипулираш.
+# 8. Синтаксисът с % на места е много по-подходящ от format.
+# 9. Използването на freeze е добра практика при дефенирането на константи в клас,
+# подобрява четимостта.
+# 10. Не-C имена на функции позволяват правенето на ретроспекция.
+# 11. Използване на attr_reader наместо едноредови функции, no-brainer.
+# 12. Преизползване на входящи параметри, вместо реструктурирането им по-късно.
+# 13. Внимателно четене на условието(един объркан символ в регекс може да счупи много тестове).
+# 14. Разликата между RuntimeError и StandardError.
+# 15. Използване на self.class:: в повечето случаи е poor's man defence срещу
+# незнание на скоуповете в Ruby.
+# 16. Method chaining(с правилния formatting) е много подходящ при използване
+# на няколко последователни функции над множества от данни.
+# 17. Стрингове, които трябва да се разцепят на няколко реда(поради тяхната дължина),
+# е по-нагледно да се 'конкатенират' чрез '\' (e.g. "Im a string" \ "Yes, a string indeed"),
+# отколкото да се пренасят чрез escape на newline символа.
+# 18. Документацията на Enumerable никога не спира да изненадва с интересни методи.
+# 19. Използването на чисти функции (pure as in functional programming), в по-голямата
+# си част, води до по-изчистен и лесен за проследяване код
+# 20. Въпреки че не съм го използвал директно в домашните, възможностите на Ruby за имлементация
+# на къстъм dsl са страхотни. В началото бях много не развалнуван относно използването
+# на instance_eval, но след като навързах кое как се залепя, стигнах до приятното
+# заключение, че дори 'езици' като Puppet са не-толкова-труди за имплементация на Ruby.
"9. Използването на freeze е добра практика при дефенирането на константи в клас, подобрява четимостта."
Не бих казал, че подобрява четимостта. Аз го намирам за добра практика, за да се получи изключение, ако някой се опита да мутира обекта, сложен в константата. Четимостта по-скоро се нарушава, защото има допълнителни неща за четене (.freeze
), които не допринасят пряко за функционалността.