Решение на Десета задача от Здравко Андонов

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

Към профила на Здравко Андонов

Резултати

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

Код

REPOSITORY = 'http://github.com/zdravkoandonov/ruby-retrospective-2015-2'
# 1. Дефинициите на по-големи вложени класове е добре да са извън дефиницията на
# външния клас за по-добра четимост на кода (Понякога и в друг файл)
# 2. Добра идея в случая на пета задача е абстракция над Outcome с CommandHelpers#error и
# CommandHelpers#success - отново подобрява четимостта
# 3. Когато е уместно, за по-кратко може да се използва тернарния условен оператор
# вместо if/else конструкция (repository.stage = branch.empty? ? {} : branch.last.stage)
# 4. В низове при използване на заместване с % може да се използват хешове като
# параметри при извикването и така да се подават параметри с разбираеми имена
# (например %{rows} вместо %s)
# 5. За краткост на кода може да се използва map(&:max) вместо map { |row| row.max }
# (т.е. да се използва #to_proc на дадена функция вместо сами да си пишем съответния блок)
# 6. Вместо масивите @turtle и @direction може да се използват @x, @y, @direction_x,
# @direction_y за по-добра четимост на кода
# 7. За предпочитане трябва да се използват недеструктивни функции - т.е. да променят
# копие на обекта - много по лесно е при отстраняване на проблеми (#with_date и #with_date!)
# 8. Можем лесно да предефинираме оператори за наши класове - например:
# def -(other)
# days - other.days
# end
# 9. Вместо сложни булеви изрази можем да използваме няколко private метода и прости
# if-ове
# 10. Вместо string.match(text), ако просто проверяваме дали text се съдържа в string,
# можем да използваме по-краткото string[text]
# 11. Винаги трябва да проверяваме дали нещо съществува (ако има възможност да не
# съществува) преди да се опитамe да го достъпим
# (if empty? or row > @table.size or column > @table[0].size)

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

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 9b78638 Use private functions and simple if statements instead of complicated boolean expressions
From /tmp/ruby-retrospective-2015-2/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
http://github.com/zdravkoandonov/ruby-retrospective-2015-2/compare/512294b6dde...9b78638c130

‘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.02551 seconds
30 examples, 0 failures
OK
..............

Finished in 0.00939 seconds
14 examples, 0 failures
OK
...............................

Finished in 0.00991 seconds
31 examples, 0 failures
OK
........................................

Finished in 0.043 seconds
40 examples, 0 failures
From https://github.com/fmi/ruby-homework
 * branch            master     -> FETCH_HEAD
HEAD is now at 9dd040c Modify a test in task 8 to not include empty cells
.

Finished in 0.00159 seconds
1 example, 0 failures

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

Здравко обнови решението на 27.01.2016 01:26 (преди над 9 години)

+REPOSITORY = 'http://github.com/zdravkoandonov/ruby-retrospective-2015-2'
+
+# 1. Дефинициите на по-големи вложени класове е добре да са извън дефиницията на
+# външния клас за по-добра четимост на кода (Понякога и в друг файл)
+# 2. Добра идея в случая на пета задача е абстракция над Outcome с CommandHelpers#error и
+# CommandHelpers#success - отново подобрява четимостта
+# 3. Когато е уместно, за по-кратко може да се използва тернарния условен оператор
+# вместо if/else конструкция (repository.stage = branch.empty? ? {} : branch.last.stage)
+# 4. В низове при използване на заместване с % може да се използват хешове като
+# параметри при извикването и така да се подават параметри с разбираеми имена
+# (например %{rows} вместо %s)
+# 5. За краткост на кода може да се използва map(&:max) вместо map { |row| row.max }
+# (т.е. да се използва #to_proc на дадена функция вместо сами да си пишем съответния блок)
+# 6. Вместо масивите @turtle и @direction може да се използват @x, @y, @direction_x,
+# @direction_y за по-добра четимост на кода
+# 7. За предпочитане трябва да се използват недеструктивни функции - т.е. да променят
+# копие на обекта - много по лесно е при отстраняване на проблеми (#with_date и #with_date!)
+# 8. Можем лесно да предефинираме оператори за наши класове - например:
+# def -(other)
+# days - other.days
+# end
+# 9. Вместо сложни булеви изрази можем да използваме няколко private метода и прости
+# if-ове
+# 10. Вместо string.match(text), ако просто проверяваме дали text се съдържа в string,
+# можем да използваме по-краткото string[text]
+# 11. Винаги трябва да проверяваме дали нещо съществува (ако има възможност да не
+# съществува) преди да се опитамe да го достъпим
+# (if empty? or row > @table.size or column > @table[0].size)