Виктор обнови решението на 14.01.2017 23:44 (преди почти 8 години)
+REPOSITORY = 'https://github.com/ViktorMarinov/ruby-retrospective-2016'
+
+# Двадесет неща, които научих.
+#
+# 1. Няма смисъл да се прави излишна проверка с цел оптимизиране на малка операция, защото кода изглежда по-сложен.
+# 2. Ако имаме два близки по смисъл хеша с еднакви ключове, може да ги обединим.
+#
+# 3. Няма нужда от clone при използване на map, защото map не променя обекта.
+# 4. Вместо string#partition може да се използва string#split с ограничение на елементите.
+# 5. По-добре да има малко дублиране на код в две функции, отколкото да имаме обща функция, която се съобразява с двете извикващи я.
+# 6. Вместо each_with_object({}) може да се използва map + to_h
+#
+# 7. Вместо да конструираме дълъг низ с +, е по-добре да се приравни на променлива и да добавяме към нея с <<.
+# 8. Когато няма нужда допълнителните класове, които използваме, да се виждат навън, е по-добре да са дефинирани вътре в класа, в който ги използваме.
+# 9. Няма нужда всеки литерален низ или число да се ползва през константа (както например в Java).
+# 10. Няма нужда от attr_accessor-и ако ги използваме само в класа.
+#
+# 11. Може да се използва "expect(something).to be <оператор_за_сравнение> other_thing" вместо expect(сравнението).to be(true)
+# 12. Подреждането на скобите на последователните сходни извиквания на expect дава по-добър вид и тестът е по-разбираем.
+# 13. Вместо method_defined? може да се използва matcher-a respond_to?
+# 14. Вместо expect(something.include?).to be(true) може да се използва expect(somethin).to include.
+# 15. Различно е да се тества to be < и not to be >.
+
+# 16. Общ родител DataStore е грешна абстракция, понеже предполага генериране на идентификатори, които може да не са необходими в други DataStores.
+# 17. Вместо each.all? може да се използва просто all?.
+# 18. При триене на записи, вместо find + delete_if, може да се използва reject!.
+# За триенето в HashStore, вместо да се обхождат всички записи и да се проверява дали съвпадат, е по-добре да се обхождат намерените.
+# 19. Вътрешно може да представим обекта като Hash, вместо да го преобразуваме всеки път.
+# 20. Няма нужда от inherited hook, понеже знаем че се извиква метода attributes.