Николай обнови решението на 20.12.2012 21:38 (преди около 12 години)
+REPOSITORY = 'https://github.com/liulin-boy/ruby-retrospective-2'
+
+# Двадесет неща, които научих.
+#
+# 1. Дефинирането на метод вътре в друг такъв е глупаво.
+# Докато в Scheme горното се прави, в Ruby то е безполезно.
+# По-общо, не бива идиоми от един език да се прилагат в друг
+# без да се помисли дали наистина са приложими.
+# 2. Много 'Ruby' е винаги, когато е възможно, (т.е. винаги)
+# да се избягва употребата на return.
+# 3. Аналогично, употребата на self се избягва,
+# освен когато е наложителна или прави кода по-четим.
+# 4. Силно препоръчително е използването на Integer#upto вместо Range.
+# 5. Array#count може да приема аргумент или блок. Готин метод.
+# 6. Monkeypath-ването често е най-лесният начин да се справим
+# с възникнал проблем, но не бива да се прави.
+# (Защото всеки път някъде по света умира котенце.)
+# 7. Конструкторът на даден клас трябва да приема смислени аргументи,
+# а не дълъг символен низ, например. За целта низа първо 'минава'
+# през метод, който го parse-ва.
+# 8. Блоковете могат да бъдат викани не непременно със същия брой
+# аргументи, колкото приемат.
+# 9. Подаването на символи вместо блокове в #map, #inject и пр.
+# съкрaщава писането, улеснява четенето, и накратко - яко е!
+# 10.class << self е добър начин да спестим малко писане,
+# когато ни се налага да пишем няколко класови метода.
+# Също така прави кода по-четим, като разделя
+# instance методите от класовите такива.
+# 11.&& и || се използват за булеви изрази, a
+# and и or в условните оператори.
+# 12.Често се изпускат скобите при подаване на аргументи на метод.
+# (На мен лично тази идея не винаги ми допада.)
+# 13.Добра практика е изнасянето на код в отделна функция,
+# и то по начин, чрез който текста да стане по-четим.
+# 14.Желателно е максимално да се избягва в кода употребата
+# на индексация. Вместо да се използва елемент на масив,
+# по-подходящо е да бъде създадена променлива с подходящо име.
+# 15.Трябва да се избягват 'магически' константи в кода.
+# Добра идея е въпросните се изнасят като отделни променливи
+# или методи, с подходящи имена.
+# 16.Изнасянето на константи в модули е напълно приемливо, за мое учудване.
+# 17.^ и $ мачват началото/края на реда, а не краищата на низ.
+# Ако искаме да мачнем краищата на стринг, използваме \A и \z.
+# 18.В регулярните изрази има look-ahead и look-behind.
+# 19.В Ruby начинът да се имплементира #to_bool е с двойно отрицание,
+# а не с тернарен оператор от вида `expr ? true : false`.
+# 20.Няма нужда в конструктора на клас да даваме начална стойност на
+# булеви променливи, ако тази стойност е false.