Решение на Десета задача от Мила Русева

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

Към профила на Мила Русева

Резултати

  • 0 точки от тестове
  • 2 бонус точки
  • 2 точки общо
  • 0 успешни тест(а)
  • 1 неуспешни тест(а)

Код

REPOSITORY = 'https://github.com/msruseva/ruby-retrospective-2015-2'
#Неща, които научих:
#Домашно 5:
#1. Структурата на подобен вид задача (изгражда система, където нещата са свързани, но не трябва да са силно взаимно зависими) е много важна. Разгледах
# много решения и ми направи впечатление, че вашият код прави най-добра, поне според мен, връзка между отделните компоненти, затова изводите, които си
# направих идват от съпоставката ми на него с други решения.
#2. Макар кодът понякога да става по-дълъг, става много по-четим, ако всеки метод има точно една функционалност, каквото е и едно от правилата в SOLID.
#3. Задачата ми помогна да разбера по-добре как работи git и ф-иите му за commit, add и т.н.
#4. Припомних си една от разликите между require и require_relative. когато ползваме require, файлът се зарежда само веднъж.
#5. Припомних си разликата между извикването на метода така: #super и така: #super().Ако методът в родителския клас има задължителни аргументи,ако извикаме
# #super() ще предизвика грешка, а на super няма.
#6. Стигнах до заключението, че monkey-patching на класове не е добра практика, особено когато имат функции, които не са типични за определен клас.
#7. Алтернатива е изнасянето им модули. Нещо което самата аз често забравям.
#
#Домашно 6:
#8. Структурата на case оператора в Ruby е удобна, но може да бъде намерен по-елегантен начин за проверки, когато имаме много случаи. Например с хешове или # масиви.
#9. Според мен създаването на глобални променливи не е добра практика в повечето случаи, но понякога, както в случая с ориентацията на самата змия e
# по-подходящо от случаи.
#10. Методът #map е изключително удобен, защото благодарение на факта, че ни връща нов масив можем след затваряне на блока да приложим някакъв друг метод
# върху #масива, както в метода #draw в ASCII класа.
#
#Домашно 7:
#11. Важно е макар кодът ти да не е безгрешен да е твой, ако не е твой да се знае.
#12. Повдигането на грешки е полезно, за да можем да хващаме грешките в задачите по-рано и е добър начин за дебъгване, но трябва човек да знае каква
# точно грешка иска да хване, за да има смисъл от тях.
#
#Домашно 8(изводите си направих по кода на един колега, защото в моя имаше прекалено много грешки, които не успях да оправя):
#13. Регулярните изрази могат да бъдат много мощно оръжие, стига да не се прекалява с тях.
#14. Отварянето на един клас по всяко време на програмата е удобно в случай, че искаме да сложим доста методи в него. Прави езика гъвкав, макар да не е
# добра практика един клас да има прекалено много методи, защото това навежда на мисълта че един клас няма една единствена функция.
#15. Глобалните променливи са полезни за изнасянето на регулярни изрази, за да направят кода по-четим.

Лог от изпълнението

From https://github.com/fmi/ruby-retrospective-2015-2
 * branch            master     -> FETCH_HEAD
HEAD is now at 512294b Modify a test in task 8 to not include empty cells
Cloning into 'submission'...
HEAD is now at bbb0ea6 Seventh solution refactor
From /tmp/ruby-retrospective-2015-2/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/msruseva/ruby-retrospective-2015-2/compare/512294b6dde...bbb0ea62d60

‘solutions/08.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/08.rb’
‘solutions/05.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/05.rb’
‘solutions/07.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/07.rb’
‘solutions/06.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/06.rb’
OK
..............................

Finished in 0.02653 seconds
30 examples, 0 failures
OK
..............

Finished in 0.00959 seconds
14 examples, 0 failures
OK
...................F

Failures:

  1) LazyMode#weekly_agenda returns multiple notes with different dates when scheduled with daily repeater
     Failure/Error: expect(agenda.notes.size).to eq(2)
       
       expected: 2
            got: 1
       
       (compared using ==)
     # ./specs/07_spec.rb:271:in `block (3 levels) in <top (required)>'

Finished in 0.00787 seconds
20 examples, 1 failure

Failed examples:

rspec ./specs/07_spec.rb:259 # LazyMode#weekly_agenda returns multiple notes with different dates when scheduled with daily repeater
F

Failures:

  1) ruby-retrospective-2015-2 covers the minimum requirements
     Failure/Error: system(command) or raise "Command failed for #{@solutions_repo}: #{command}"
     RuntimeError:
       Command failed for https://github.com/msruseva/ruby-retrospective-2015-2: bundle exec rake check
     # /tmp/d20160131-21007-1f0jn56/spec.rb:107:in `execute'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:82:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:81:in `chdir'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:81:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:47:in `chdir'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:47:in `block in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:46:in `solutions_pass_all_checks'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:20:in `ok?'
     # /tmp/d20160131-21007-1f0jn56/spec.rb:126:in `<top (required)>'

Finished in 0.00094 seconds
1 example, 1 failure

Failed examples:

rspec /tmp/d20160131-21007-1f0jn56/spec.rb:132 # ruby-retrospective-2015-2 covers the minimum requirements

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

Мила обнови решението на 27.01.2016 23:50 (преди почти 9 години)

+REPOSITORY = 'https://github.com/msruseva/ruby-retrospective-2015-2'
+
+#Неща, които научих:
+#Домашно 5:
+#1. Структурата на подобен вид задача (изгражда система, където нещата са свързани, но не трябва да са силно взаимно зависими) е много важна. Разгледах
+# много решения и ми направи впечатление, че вашият код прави най-добра, поне според мен, връзка между отделните компоненти, затова изводите, които си
+# направих идват от съпоставката ми на него с други решения.
+#2. Макар кодът понякога да става по-дълъг, става много по-четим, ако всеки метод има точно една функционалност, каквото е и едно от правилата в SOLID.
+#3. Задачата ми помогна да разбера по-добре как работи git и ф-иите му за commit, add и т.н.
+#4. Припомних си една от разликите между require и require_relative. когато ползваме require, файлът се зарежда само веднъж.
+#5. Припомних си разликата между извикването на метода така: #super и така: #super().Ако методът в родителския клас има задължителни аргументи,ако извикаме
+# #super() ще предизвика грешка, а на super няма.
+#6. Стигнах до заключението, че monkey-patching на класове не е добра практика, особено когато имат функции, които не са типични за определен клас.
+#7. Алтернатива е изнасянето им модули. Нещо което самата аз често забравям.
+#
+#Домашно 6:
+#8. Структурата на case оператора в Ruby е удобна, но може да бъде намерен по-елегантен начин за проверки, когато имаме много случаи. Например с хешове или # масиви.
+#9. Според мен създаването на глобални променливи не е добра практика в повечето случаи, но понякога, както в случая с ориентацията на самата змия e
+# по-подходящо от случаи.
+#10. Методът #map е изключително удобен, защото благодарение на факта, че ни връща нов масив можем след затваряне на блока да приложим някакъв друг метод
+# върху #масива, както в метода #draw в ASCII класа.
+#
+#Домашно 7:
+#11. Важно е макар кодът ти да не е безгрешен да е твой.
+#12. Повдигането на грешки е полезно, за да можем да хващаме грешките в задачите по-рано и е добър начин за дебъгване, но трябва човек да знае каква
+# точно грешка иска да хване, за да има смисъл от тях.
+#
+#Домашно 8:
+#13. Регулярните изрази могат да бъдат много мощно оръжие, стига да не се прекалява с тях.
+#14. Отварянето на един клас по всяко време на програмата е удобно в случай, че искаме да сложим доста методи в него. Прави езика гъвкав, макар да не е
+# добра практика един клас да има прекалено много методи, защото това навежда на мисълта че един клас няма една единствена функция.
+#15. Глобалните променливи са полезни за изнасянето на регулярни изрази, за да направят кода по-четим.

Мила обнови решението на 27.01.2016 23:56 (преди почти 9 години)

REPOSITORY = 'https://github.com/msruseva/ruby-retrospective-2015-2'
#Неща, които научих:
#Домашно 5:
#1. Структурата на подобен вид задача (изгражда система, където нещата са свързани, но не трябва да са силно взаимно зависими) е много важна. Разгледах
# много решения и ми направи впечатление, че вашият код прави най-добра, поне според мен, връзка между отделните компоненти, затова изводите, които си
# направих идват от съпоставката ми на него с други решения.
#2. Макар кодът понякога да става по-дълъг, става много по-четим, ако всеки метод има точно една функционалност, каквото е и едно от правилата в SOLID.
#3. Задачата ми помогна да разбера по-добре как работи git и ф-иите му за commit, add и т.н.
#4. Припомних си една от разликите между require и require_relative. когато ползваме require, файлът се зарежда само веднъж.
#5. Припомних си разликата между извикването на метода така: #super и така: #super().Ако методът в родителския клас има задължителни аргументи,ако извикаме
# #super() ще предизвика грешка, а на super няма.
#6. Стигнах до заключението, че monkey-patching на класове не е добра практика, особено когато имат функции, които не са типични за определен клас.
#7. Алтернатива е изнасянето им модули. Нещо което самата аз често забравям.
#
#Домашно 6:
#8. Структурата на case оператора в Ruby е удобна, но може да бъде намерен по-елегантен начин за проверки, когато имаме много случаи. Например с хешове или # масиви.
#9. Според мен създаването на глобални променливи не е добра практика в повечето случаи, но понякога, както в случая с ориентацията на самата змия e
# по-подходящо от случаи.
#10. Методът #map е изключително удобен, защото благодарение на факта, че ни връща нов масив можем след затваряне на блока да приложим някакъв друг метод
# върху #масива, както в метода #draw в ASCII класа.
#
#Домашно 7:
-#11. Важно е макар кодът ти да не е безгрешен да е твой.
+#11. Важно е макар кодът ти да не е безгрешен да е твой, ако не е твой да се знае.
#12. Повдигането на грешки е полезно, за да можем да хващаме грешките в задачите по-рано и е добър начин за дебъгване, но трябва човек да знае каква
# точно грешка иска да хване, за да има смисъл от тях.
#
-#Домашно 8:
+#Домашно 8(изводите си направих по кода на един колега, защото в моя имаше прекалено много грешки, които не успях да оправя):
#13. Регулярните изрази могат да бъдат много мощно оръжие, стига да не се прекалява с тях.
#14. Отварянето на един клас по всяко време на програмата е удобно в случай, че искаме да сложим доста методи в него. Прави езика гъвкав, макар да не е
# добра практика един клас да има прекалено много методи, защото това навежда на мисълта че един клас няма една единствена функция.
#15. Глобалните променливи са полезни за изнасянето на регулярни изрази, за да направят кода по-четим.