Петър обнови решението на 22.01.2014 17:10 (преди почти 11 години)
+REPOSITORY = 'https://github.com/pmazalov/ruby-retrospective-3'
+
+# Двадесет неща, които научих:
+# 1. Научих се да избягвам употребата на return, тъй като в повечето случай
+# е напълно ненужно и само загрозява кода.
+# 2. Започнах да използвам Integer#upto вместо Range.
+# 3. Едно от най-важните неща е че започвах да си кръщавам променливите с
+# подходящи имена, което ми помогна по-лесно да се ориентирам в кода.
+# 4. Научих да използвам self по-рядко, тъй като на много места може
+# просто да се изпусне, освен ако не е наложително да се използва
+# или да направи кодът по четим.
+# 5. Използването на помощни методи в прости задачи не е особено елегантно,
+# и трябва да се мисли дали няма по-добър начин за справяне с проблема.
+# 6. Научих се да използвам Enumerable#map вместо да създавам допълнителна
+# колекциая и да добавям един по един елементите след като ги обходя с
+# each и ги променя.
+# 7. Вече използвам метода Enumerable#reduce за смаляване на определена
+# колекция. Доста интересен и най-вече полезен метод.
+# 8. Не винаги е добра идея да се използва attr_accessor, поради това че може
+# да се даде достъп на външния неща да правят промени по програмата ти.
+# Винаги трябва да се мисли дали наистина ти трябва attr_accessor или
+# attr_reader!
+# 9. При писане на код трябва да се гледа да бъде DRY, но това не означава
+# това да ти е основната цел и по този начин да го направиш по нечетлив
+# отколкото такъв с малко повторение.
+# 10. При нужда за изпълнение на определено действие, първо трябва да се проверява
+# дали има вече дефиниран метод вършещ нужното действие, преди да започнеш сам
+# да си дефинираш такъв. Това спестява изключително много време, кодът
+# става по-четлив и по-лесно разбираем дори и от външни хора.
+# 11. Кодът е много по-разбираем при правилно форматиране и прилагане на вече
+# приетите стилистики за писане.
+# 12. Използването на класа class << self е добра практика когато имаме няколко
+# класови метода - той пести време, а също и отделя класовите методи от instance
+# методите правейки кода по лесно четим.
+# 13. Харесва ми че в Руби не винаги е задължително да използваш Обектно-ориентирания
+# подход, някой неща могат да се решат много просто и елегантно с функционалния такъв.
+# 14. Предефинирането на метода Enumerable#each спрямо специфичен твой обект ти дава
+# достъп до всички останали методи в Enumerable. Страшно полезно!
+# 15. Използването на регуярни изрази може да е кошмарно на места, но при кратки и специ-
+# фични изисквания към задачата може да ти спести тонове код и главоблъсканица как
+# може да се намери определено нещо.
+# 16. Научих че е грешно да се мутират подаддените обекти, тъй като това може да
+# наруши целостта на програмата, а и да доведе до нежелани странични ефекти.
+# 17. Хубаво е нещата да се добре обособени, тоест вместо да правим един сложен метод
+# може просто да го разделим на няколко по-малки и по-лесно разбираеми.
+# 18. Нещото, което супер много ми хареса е че всяка задача има ограничения.
+# Незнам, за повечето хора може да е нормално, но аз не се бях сблъсквал с това
+# и ми хареса идеята, подпомогна ми да мисля по-изчистено така да се каже, да търся
+# по просто решение на проблема, а не първото нещо, което ми хрумне!
+# 19. Научих че колкото и добро да смяташ че е твоето решение, винаги може да се намери
+# по-добро, и че критиката от хората не е злонамерена и не трябва да се приема като
+# обида, а като помощ за постигане на дадена цел.
+# 20. Най-вече ми хареса, че в курса се преподава извън рамката т.е ми бяха обяснени
+# различни неща не свързани само с теоретично учене. Всичко, което учим, беше показано
+# на практика, бяха разглеждани добри практики в програмирането не само на Руби,
+# бяхме запознати със странични програми и неща, полезни за един програмист, а също
+# и с хора компетентни в своята област. Много готино!
За съжаление, тестовете ти не минават, както и не си спазил някои skeptic ограничения и няма как да ти дам точки за тази задача.
От друга страна, нещата, които си написал, ми харесват и ще ти дам бонус точки за тях :)
Виж коментара, който оставих на Моника по втора задача, относно Task.new
.
Смятам, че в решенията ти има още доста място за подобрение. Силно те съветвам да си избереш три решения на тази (пета) задача, на които съм дал най-много точки и да ги разгледаш внимателно. Вярвам, че ще има интересни и важни неща, които ще научиш от това.