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

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

Към профила на Малина Демирова

Резултати

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

Код

REPOSITORY = 'https://github.com/MalinaD/ruby-retrospective-2016'
# Двадесет неща, които научих.
#
# Задача 1
# 1. Научих, че използването на константи е лесно, кода е по-четим и после мога да ги достъпвам по-лесно и в други методи
# 2. Научих, че не е нужно да имам един if с много под случаи (което доведе до това, че бях изпуснала няколко случая и не ми минаха всички тестове).
# 3. Проверката дали ни се подава същата мерна единица, в която искаме да работим, може да бъде проверена веднъж, а не във всеки метод (както бях направила в началото)
# 4. Формулата, за конвертиране на градусите може да бъде опростена и не е нужно да изписваме всеки един вариант (най- вече защото може да изпуснем някой)
# 5. Разбрах, че to_i нямаше място във формулата, особено ако имам и числа с плаваща запетая
#
# Задача 2
# 0. Че винаги е полезно да си отделям повече време за дадена задача
# 1. Научих, че split е много по-лесен за използване от gsub(/[\[\]\"\\]/, '') , който доста го мислих как да изглежда и какво точно да ескейпва
# 2. Разбрах, че лесно мога да взема всички ключове на даден хеш, след това да ги променя използвайки shape.keys.map
# 3. Не е нужно да декларирам хеш по този начин hash = {}
#
# Задача 5
# 1. Научих, че може да наследявам класове за улеснение, когато два класа имат подобни методи. Така кода е по-лесно четим, мога да създам и друг клас, който да използва същите методи.
# 2. Научих се да използвам super , за да викам стойности при наследяването
# 3. Разбрах как да използвам private методи, които да се използват само в класа, и ако се наложи в наследниците
# 4. Научих, че ** пред аргумент на метод е подобно на * (параметър, който взима неопределен брой аргументи), но се използва за keyword аргументи. Т.е може да приеме хеш двойка ключ/стойност
# 5. Разбрах как да пускам съобщения с четими за потребителя грешки, когато нещо не изпълнено
#
#
# Задача 4
# 0. За тестовете е нужно повече време, те могат да са всякакви варианти и за да се обхване по-голям кръг от тях е необходимо внимание и добро четене на кода и на работата на самата програма
# 1. Научих как работи #<=> , че в зависимост от резултата връща -1 , 0 или 1
# 2. Научих, че е добре да ескейпвам внимателно
# 3. Разбрах, че е добре да тествам за различни стойности, дори тези като празно поле и нула, все пак всеки потребител би могъл да сбърка и нещо да се счупи след това
# 4. Да не забравям негативните тест кейсове, може да се подаде стойност извън положителните и тогава програмата трябва да реагира по подходящ начин
#

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

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 9d1f22f Task 5 - the last changes described in the homework
From /tmp/ruby-retrospective-2016/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/MalinaD/ruby-retrospective-2016/compare/fdc639bda63...9d1f22fc855

'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.00493 seconds
17 examples, 0 failures
Inspecting 1 file
C

Offenses:

solution.rb:3:3: C: Use 2 (not 1) spaces for indentation.
  	key, nested_key_path = input.split('.', 2)
  ^
solution.rb:3:3: C: Tab detected.
  	key, nested_key_path = input.split('.', 2)
  ^
solution.rb:7:5: C: Tab detected.
solution.rb:13:5: C: Use 2 (not 1) spaces for indentation.
    	if shape[key].class != Hash
    ^
solution.rb:13:5: C: Tab detected.
    	if shape[key].class != Hash
    ^
solution.rb:14:5: C: Tab detected.
    	  [key, fetch_deep(shape[key])]
    ^
solution.rb:15:5: C: Tab detected.
    	else
    ^
solution.rb:16:5: C: Tab detected.
    	  [key, reshape(shape[key])]
    ^
solution.rb:17:5: C: Tab detected.
    	end
    ^
solution.rb:24:3: C: Use 2 (not 1) spaces for indentation.
  	map! { |x| x.reshape(shape)}
  ^
solution.rb:24:3: C: Tab detected.
  	map! { |x| x.reshape(shape)}
  ^
solution.rb:24:31: C: Space missing inside }.
  	map! { |x| x.reshape(shape)}
                              ^

1 file inspected, 12 offenses detected
F

Failures:

  1) ruby-retrospective-2016 covers the minimum requirements
     Failure/Error: system(command) or raise "Command failed for #{@solutions_repo}: #{command}"
     RuntimeError:
       Command failed for https://github.com/MalinaD/ruby-retrospective-2016: bundle exec rake check_all
     # /tmp/d20170211-11010-12d6q7z/spec.rb:82:in `execute'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:75:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:74:in `chdir'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:74:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:40:in `chdir'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:40:in `block in solutions_pass_all_checks'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:39:in `solutions_pass_all_checks'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:19:in `ok?'
     # /tmp/d20170211-11010-12d6q7z/spec.rb:101:in `<top (required)>'

Finished in 0.0009 seconds
1 example, 1 failure

Failed examples:

rspec /tmp/d20170211-11010-12d6q7z/spec.rb:107 # ruby-retrospective-2016 covers the minimum requirements

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

Малина обнови решението на 16.01.2017 15:05 (преди почти 8 години)

+REPOSITORY = 'https://github.com/MalinaD/ruby-retrospective-2016'
+
+# Двадесет неща, които научих.
+#
+# Задача 1
+# 1. Научих, че използването на константи е лесно, кода е по-четим и после мога да ги достъпвам по-лесно и в други методи
+# 2. Научих, че не е нужно да имам един if с много под случаи (което доведе до това, че бях изпуснала няколко случая и не ми минаха всички тестове).
+# 3. Проверката дали ни се подава същата мерна единица, в която искаме да работим, може да бъде проверена веднъж, а не във всеки метод (както бях направила в началото)
+# 4. Формулата, за конвертиране на градусите може да бъде опростена и не е нужно да изписваме всеки един вариант (най- вече защото може да изпуснем някой)
+# 5. Разбрах, че to_i нямаше място във формулата, особено ако имам и числа с плаваща запетая
+#
+# Задача 2
+# 0. Че винаги е полезно да си отделям повече време за дадена задача
+# 1. Научих, че split е много по-лесен за използване от gsub(/[\[\]\"\\]/, '') , който доста го мислих как да изглежда и какво точно да ескейпва
+# 2. Разбрах, че лесно мога да взема всички ключове на даден хеш, след това да ги променя използвайки shape.keys.map
+# 3. Не е нужно да декларирам хеш по този начин hash = {}
+#
+# Задача 3
+#
+#
+#
+#
+#
+# Задача 4
+# 0. За тестовете е нужно повече време, те могат да са всякакви варианти и за да се обхване по-голям кръг от тях е необходимо внимание и добро четене на кода и на работата на самата програма
+# 1. Научих как работи #<=> , че в зависимост от резултата връща -1 , 0 или 1
+# 2. Научих, че е добре да ескейпвам внимателно
+# 3. Разбрах, че е добре да тествам за различни стойности, дори тези като празно поле и нула, все пак всеки потребител би могъл да сбърка и нещо да се счупи след това
+# 4. Да не забравям негативните тест кейсове, може да се подаде стойност извън положителните и тогава програмата трябва да реагира по подходящ начин
+#
+#
+#
+#

Малина обнови решението на 16.01.2017 16:34 (преди почти 8 години)

REPOSITORY = 'https://github.com/MalinaD/ruby-retrospective-2016'
# Двадесет неща, които научих.
#
# Задача 1
# 1. Научих, че използването на константи е лесно, кода е по-четим и после мога да ги достъпвам по-лесно и в други методи
# 2. Научих, че не е нужно да имам един if с много под случаи (което доведе до това, че бях изпуснала няколко случая и не ми минаха всички тестове).
# 3. Проверката дали ни се подава същата мерна единица, в която искаме да работим, може да бъде проверена веднъж, а не във всеки метод (както бях направила в началото)
# 4. Формулата, за конвертиране на градусите може да бъде опростена и не е нужно да изписваме всеки един вариант (най- вече защото може да изпуснем някой)
# 5. Разбрах, че to_i нямаше място във формулата, особено ако имам и числа с плаваща запетая
#
# Задача 2
# 0. Че винаги е полезно да си отделям повече време за дадена задача
# 1. Научих, че split е много по-лесен за използване от gsub(/[\[\]\"\\]/, '') , който доста го мислих как да изглежда и какво точно да ескейпва
# 2. Разбрах, че лесно мога да взема всички ключове на даден хеш, след това да ги променя използвайки shape.keys.map
# 3. Не е нужно да декларирам хеш по този начин hash = {}
#
-# Задача 3
+# Задача 5
+# 1. Научих, че може да наследявам класове за улеснение, когато два класа имат подобни методи. Така кода е по-лесно четим, мога да създам и друг клас, който да използва същите методи.
+# 2. Научих се да използвам super , за да викам стойности при наследяването
+# 3. Разбрах как да използвам private методи, които да се използват само в класа, и ако се наложи в наследниците
+# 4. Научих, че ** пред аргумент на метод е подобно на * (параметър, който взима неопределен брой аргументи), но се използва за keyword аргументи. Т.е може да приеме хеш двойка ключ/стойност
+# 5. Разбрах как да пускам съобщения с четими за потребителя грешки, когато нещо не изпълнено
#
#
-#
-#
-#
# Задача 4
# 0. За тестовете е нужно повече време, те могат да са всякакви варианти и за да се обхване по-голям кръг от тях е необходимо внимание и добро четене на кода и на работата на самата програма
# 1. Научих как работи #<=> , че в зависимост от резултата връща -1 , 0 или 1
# 2. Научих, че е добре да ескейпвам внимателно
# 3. Разбрах, че е добре да тествам за различни стойности, дори тези като празно поле и нула, все пак всеки потребител би могъл да сбърка и нещо да се счупи след това
# 4. Да не забравям негативните тест кейсове, може да се подаде стойност извън положителните и тогава програмата трябва да реагира по подходящ начин
-#
-#
-#
#