Решение на Седма задача - ретроспекция от Мартин Христов

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

Към профила на Мартин Христов

Резултати

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

Код

REPOSITORY = 'https://github.com/MapTo0/ruby-retrospective-2016'
# Двадесет неща, които научих.
#
# 1. Хешовете в Ruby са една от най-използваните структури от данни. Понякога могат лесно
# да заместят условия без да развалят четимостта на кода. Вършат страхотна работа когато
# имаме много обекти от един и същ тип, които имат еднакви параметри, с които ще работим
# по-късно в наша функция. От първа задачи си припомних също как се преобразуват едни
# мердни единици в други.
# 2. Доста от методите на Hash и Array са подобни и лесно се превръща едното в другото.
# 3. На доста места използването на #map е много по-удачно от #each.
# 4. Ruby не е C / C++ / Java / etc :). Четенето на Ruby код, трябва да е като четене на книга.
# 5. Трябва да чета условията внимателно. Да мисля, за гранични случаи, които моят код не покрива. Да питам
# когато не разбирам условието вместо да пиша грешна имплементация.
# 6. Разделянето на различни класове не трябва да е, за да направим даден клас по-кратък или за да скасим
# даден ред. Трябва да е смислено и да решава определен проблем. Обектно ориентираният подход е важен
# и помага доста за четимостта и архитектурата на решението.
# 7. Когато пиша тестове да внимавам да не включа примери, които са грешни.
# 8. Разликата между Class Variables, Instance Variables и Class level instance variables.
# 9. Какво е Ancestor chain.
# 10. Можем да дефинираме съобщение на дадена грешка, като извикаме в конструктора ѝ super() със съответното
# съобщение.
# 11. Преди да напиша мой метод за някаква функционалност да проверя дали вече има такъв ...
# 12. Private в Ruby не е като private в други езици (e.g. C++, Java), а по-скоро прилича на protected
# в тях. Protect от своя страна подобен на private, но може да се вика на явен получател.
# 13. #select е много удобен, когато искаме да филтрираме дадена колекция или Hash
# 14. Range - ове се правят с number..other_number и включват other_number ако са с две точки(..),
# с три - не.
# 15. Как се използва pry.
# 16. Как се пишат тестове, които проверяват дали други тестове са добри.
# 17. По-добре е да се използва `is_a some_class`, а не `variable.class == some_class`
# 18. Как работи паралелното присвояване в Ruby
# 19. define_method и define_singleton_method служат за динамично създаване на методи.
# 20. zsh иска да се ескейпват квадратните скоби. (Имах проблеми с bundle exec rake check[1])

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

From https://github.com/fmi/ruby-retrospective-2016
 * branch            master     -> FETCH_HEAD
HEAD is now at a22cf37 Set rubocop version to 0.46.0 to fix obsolete cop errors
Cloning into 'submission'...
HEAD is now at 170a923 final solution
From /tmp/ruby-retrospective-2016/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/MapTo0/ruby-retrospective-2016/compare/1f710b00c26...170a923bb93

'tasks/1/solution.rb' -> '/tmp/ruby-retrospective-2016/checker/tasks/1/solution.rb'
'tasks/2/solution.rb' -> '/tmp/ruby-retrospective-2016/checker/tasks/2/solution.rb'
'tasks/3/solution.rb' -> '/tmp/ruby-retrospective-2016/checker/tasks/3/solution.rb'
'tasks/4/solution.rb' -> '/tmp/ruby-retrospective-2016/checker/tasks/4/solution.rb'
'tasks/5/solution.rb' -> '/tmp/ruby-retrospective-2016/checker/tasks/5/solution.rb'
Inspecting 1 file
.

1 file inspected, no offenses detected
.................

Finished in 0.00468 seconds
17 examples, 0 failures
Inspecting 1 file
.

1 file inspected, no offenses detected
...............

Finished in 0.00516 seconds
15 examples, 0 failures
Inspecting 1 file
.

1 file inspected, no offenses detected

...............

Finished in 0.00553 seconds
15 examples, 0 failures
Inspecting 1 file
.

1 file inspected, no offenses detected
....................

Finished in 22.24 seconds
20 examples, 0 failures
Inspecting 1 file
.

1 file inspected, no offenses detected
.........................

Finished in 0.01737 seconds
25 examples, 0 failures
.

Finished in 0.00169 seconds
1 example, 0 failures

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

Мартин обнови решението на 15.01.2017 20:50 (преди около 7 години)

+REPOSITORY = 'https://github.com/MapTo0/ruby-retrospective-2016'
+
+# Двадесет неща, които научих.
+#
+# 1. Хешовете в Ruby са една от най-използваните структури от данни. Понякога могат лесно
+# да заместят условия без да развалят четимостта на кода. Вършат страхотна работа когато
+# имаме много обекти от един и същ тип, които имат еднакви параметри, с които ще работим
+# по-късно в наша функция. От първа задачи си припомних също как се преобразуват едни
+# мердни единици в други.
+# 2. Доста от методите на Hash и Array са подобни и лесно се превръща едното в другото.
+# 3. На доста места използването на #map е много по-удачно от #each.
+# 4. Ruby не е C / C++ / Java / etc :). Четенето на Ruby код, трябва да е като четене на книга.
+# 5. Трябва да чета условията внимателно. Да мисля, за гранични случаи, които моят код не покрива. Да питам
+# когато не разбирам условието вместо да пиша грешна имплементация.
+# 6. Разделянето на различни класове не трябва да е, за да направим даден клас по-кратък или за да скасим
+# даден ред. Трябва да е смислено и да решава определен проблем. Обектно ориентираният подход е важен
+# и помага доста за четимостта и архитектурата на решението.
+# 7. Когато пиша тестове да внимавам да не включа примери, които са грешни.
+# 8. Разликата между Class Variables, Instance Variables и Class level instance variables.
+# 9. Какво е Ancestor chain.
+# 10. Можем да дефинираме съобщение на дадена грешка, като извикаме в конструктора ѝ super() със съответното
+# съобщение.
+# 11. Преди да напиша мой метод за някаква функционалност да проверя дали вече има такъв ...
+# 12. Private в Ruby не е като private в други езици (e.g. C++, Java), а по-скоро прилича на protected
+# в тях. Protect от своя страна подобен на private, но може да се вика на явен получател.
+# 13. #select е много удобен, когато искаме да филтрираме дадена колекция или Hash
+# 14. Range - ове се правят с number..other_number и включват other_number ако са с две точки(..),
+# с три - не.
+# 15. Как се използва pry.
+# 16. Как се пишат тестове, които проверяват дали други тестове са добри.
+# 17. По-добре е да се използва `is_a some_class`, а не `variable.class == some_class`
+# 18. Как работи паралелното присвояване в Ruby
+# 19. define_method и define_singleton_method служат за динамично създаване на методи.
+# 20. zsh иска да се ескейпват квадратните скоби. (Имах проблеми с bundle exec rake check[1])