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

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

Към профила на Петър Скорчелиев

Резултати

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

Код

REPOSITORY = 'https://github.com/Scorpion333/ruby-retrospective-2016'
# Двадесет неща, които научих.
#
# 1. Преобразуването на температурите в задача 1 е по-добре да се направи с преминаване
# през задължителна мерна единица, вместо с разглеждане на всяка наредена двойка
# единици поотделно - така, ако имаме n мерни единици и решим да добавим нова,
# ще е достатъчно да напишем само два реда, вместо n нови случая.
# 2. Синтаксисът и семантиката на ламбда функциите. Доскоро не бях писал такива в Руби.
# 3. Различните случаи на мерни единици в задача 1 могат да се решат чрез използване на хеш с ламбди вместо
# условна конструкция
# 4. Методът String#split връща масив от частите, които се получават при разделянето на стринга от
# срещанията на подстринг, подаден като параметър.
# 5. Операторът || не връща винаги true или false, той връща първия операнд, който се оценява на истина,
# ако има такъв, в противен случай връща последния операнд.
# 6. В Ruby има тернарен оператор, чийто синтаксис е като на С++. Rubocop няма нищо против употребата му.
# 7. Грешка се хвърля чрез извикване на Kernel#raise с обект от клас-наследник на Exception
# 8. При писане на unit тестове може да се дефинира помощен метод, който да съкрати писането, например ако правим
# много проверки с произволни инстанции на един и същи клас.
# 9. При unit тестване мога да използвам matcher-а raise_error, за да проверявам дали се хвърля грешка
# 10. Ако искам да тествам клас, който има оператори за сравнение, добре е да не се тества само #<=>,
# а да се направят проверки и за другите оператори.
# 11. За създаване на наш клас за грешка, обикновено пишем празен клас, който наследява от някой вече дефиниран
# клас за грешка - често вграден клас като StandartError.

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

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 fdd36c7 only 1 rubocop offence
From /tmp/ruby-retrospective-2016/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/Scorpion333/ruby-retrospective-2016/compare/1f710b00c26...fdd36c7e37a

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

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

Finished in 0.00521 seconds
15 examples, 0 failures
Inspecting 1 file
C

Offenses:

solution.rb:48:81: C: Line is too long. [99/80]
    hash = {short: short, long: long, block: block, description: description, parameter: parameter}
                                                                                ^^^^^^^^^^^^^^^^^^^

1 file inspected, 1 offense 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/Scorpion333/ruby-retrospective-2016: bundle exec rake check_all
     # /tmp/d20170211-11010-107s37x/spec.rb:82:in `execute'
     # /tmp/d20170211-11010-107s37x/spec.rb:75:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20170211-11010-107s37x/spec.rb:74:in `chdir'
     # /tmp/d20170211-11010-107s37x/spec.rb:74:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20170211-11010-107s37x/spec.rb:40:in `chdir'
     # /tmp/d20170211-11010-107s37x/spec.rb:40:in `block in solutions_pass_all_checks'
     # /tmp/d20170211-11010-107s37x/spec.rb:39:in `solutions_pass_all_checks'
     # /tmp/d20170211-11010-107s37x/spec.rb:19:in `ok?'
     # /tmp/d20170211-11010-107s37x/spec.rb:101:in `<top (required)>'

Finished in 0.00088 seconds
1 example, 1 failure

Failed examples:

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

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

Петър обнови решението на 16.01.2017 14:37 (преди над 7 години)

+REPOSITORY = 'https://github.com/Scorpion333/ruby-retrospective-2016'
+
+# Двадесет неща, които научих.
+#
+# 1. Преобразуването на температурите в задача 1 е по-добре да се направи с преминаване
+# през задължителна мерна единица, вместо с разглеждане на всяка наредена двойка
+# единици поотделно - така, ако имаме n мерни единици и решим да добавим нова,
+# ще е достатъчно да напишем само два реда, вместо n нови случая.
+# 2. Синтаксисът и семантиката на ламбда функциите. Доскоро не бях писал такива в Руби.
+# 3. Различните случаи на мерни единици в задача 1 могат да се решат чрез използване на хеш с ламбди вместо
+# условна конструкция
+# 4. Методът String#split връща масив от частите, които се получават при разделянето на стринга от
+# срещанията на подстринг, подаден като параметър.
+# 5. Операторът || не връща винаги true или false, той връща първия операнд, който се оценява на истина,
+# ако има такъв, в противен случай връща последния операнд.
+# 6. В Ruby има тернарен оператор, чийто синтаксис е като на С++. Rubocop няма нищо против употребата му.
+# 7. Грешка се хвърля чрез извикване на Kernel#raise с обект от клас-наследник на Exception
+# 8. При писане на unit тестове може да се дефинира помощен метод, който да съкрати писането, например ако правим
+# много проверки с произволни инстанции на един и същи клас.
+# 9. При unit тестване мога да използвам matcher-а raise_error, за да проверявам дали се хвърля грешка
+# 10. Ако искам да тествам клас, който има оператори за сравнение, добре е да не се тества само #<=>,
+# а да се направят проверки и за другите оператори.
+# 11. За създаване на наш клас за грешка, обикновено пишем празен клас, който наследява от някой вече дефиниран
+# клас за грешка - често вграден клас като StandartError.