Решение на Десета задача от Теодор Климентов

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

Към профила на Теодор Климентов

Резултати

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

Код

REPOSITORY = 'https://github.com/m1trix/ruby-retrospective-2015-2'
# Двадесет неща, които научих:
# 1. Ruby е подходящ за TDD. Прилагането на TDD за имплементацията на
# домашните води до по-добри резултати.
# 2. #instance_eval оценява блок в scope-а на дадена инстанция. Може
# да направи кода много по-красив.
# 3. Keep it simple. Може и да е сложно - пак ще работи, но каква е
# ползата? Само защото можеш да направиш нещо по по-сложен начин
# (например да използваш някоя интересна езикова структура) не
# означава, че трябва да го правиш.
# 4. Многоредовите низове като цяло са грозни. Има различни начини
# за записването им, но освен ако нямаш друг избор, нека е с heredoc.
# 5. Понякога е полезно да се създаде някой и друг допълнителен клас,
# който не се изисква от условието. В него може да се постави
# повртарящ се код или да се опаково ново ниво на абстракция.
# 6. Скобите са важни. Ruby се справя с приоритетите без проблем, но
# изпускането на скоби прави кода труден за четене от хора (и от автора).
# Хората не бива да помнят приоритети! Това само забавя разбирането
# на кода. Скобите могат да служат и като разделител, с който ясно
# се ограждат отделните логически единици на даден израз.
# 7. Въпреки многото удобства в езика, няма удобства за хващане на
# групи от регулярни изрази. Не казвам, че наличните способи са
# неудобни за ползване, но за език, който дава странни имена на 90%
# от методите си, само за да са по-кратки, е малко странно, че няма
# готов синтаксис за хващане на групи.
# 8. Въпреки по-неудобните им приоритети, логическите оператори са
# по-четими, когато са записани с думи. Комбинират се особено добре
# със обилните скоби. (без да се претрупват разбира се).
# 9. Метапрограмирането заобикаля някои иначе неудобни ситуации. Както
# останалите "магии" от езика, трябва да се използва само при крайна
# нужда.
# 10.Научих много повече неща от първите 4 домашни, отколкото от вторите.
# Не ги научих сега, след ретроспективата, а още когато решенията ставаха
# публични.
# 11.Добре написани custom matcher-и на rspec, могат да изобличат напрактика
# неоткриваеми грешки.
# 12.Накрая sample.spec се пуска задължително. Понякога с него се хващат
# най-неочаквани грешки.
# 13.Не си дописваш домашните на друг компютър, особено на такъв без skeptic.
# 14.Научих се да ползвам форума за да си доизяснявам условията. Също така да
# го следя докоато не изтече времето за задачата.
# 15.Не всички практики удобни за други езици са подходящи за Ruby.
# 16.Научих, че е по-добре, когато текстовият ти редактор има highlight за
# интерполация в низове.
# 17.Почти всички въпроси могат да бъдат отговорени след бързо посещение на
# документацията. Документацията е злато.
# 18.Научих, че и привидно сложни проблеми имат прости Ruby решения. Решения,
# които не биха имали на други езици. Руби извършва много работа в малък
# по обем код.
# 19.Ruby няма синтаксис за множества?! Има синаксис за всевъзможни неща,
# но не и за множества. Множествата трябва да се require-ват допълнително.
# Множествата са неудобни. Може да се работи в тази посока...
# 20.Научих се да ценя Ruby за това което дава, въпреки неговите недостатъци.

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

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 68407ac Fixing styles
From /tmp/ruby-retrospective-2015-2/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/m1trix/ruby-retrospective-2015-2/compare/512294b6dde...68407ac0d59

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

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

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

Finished in 0.02077 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 версия и 1 коментар)

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

+REPOSITORY = 'https://github.com/m1trix/ruby-retrospective-2015-2'
+
+# Двадесет неща, които научих:
+
+# 1. Ruby е подходящ за TDD. Прилагането на TDD за имплементацията на
+# домашните води до по-добри резултати.
+
+# 2. #instance_eval оценява блок в scope-а на дадена инстанция. Може
+# да направи кода много по-красив.
+
+# 3. Keep it simple. Може и да е сложно - пак ще работи, но каква е
+# ползата? Само защото можеш да направиш нещо по по-сложен начин
+# (например да използваш някоя интересна езикова структура) не
+# означава, че трябва да го правиш.
+
+# 4. Многоредовите низове като цяло са грозни. Има различни начини
+# за записването им, но освен ако нямаш друг избор, нека е с heredoc.
+
+# 5. Понякога е полезно да се създаде някой и друг допълнителен клас,
+# който не се изисква от условието. В него може да се постави
+# повртарящ се код или да се опаково ново ниво на абстракция.
+
+# 6. Скобите са важни. Ruby се справя с приоритетите без проблем, но
+# изпускането на скоби прави кода труден за четене от хора (и от автора).
+# Хората не бива да помнят приоритети! Това само забавя разбирането
+# на кода. Скобите могат да служат и като разделител, с който ясно
+# се ограждат отделните логически единици на даден израз.
+
+# 7. Въпреки многото удобства в езика, няма удобства за хващане на
+# групи от регулярни изрази. Не казвам, че наличните способи са
+# неудобни за ползване, но за език, който дава странни имена на 90%
+# от методите си, само за да са по-кратки, е малко странно, че няма
+# готов синтаксис за хващане на групи.
+
+# 8. Въпреки по-неудобните им приоритети, логическите оператори са
+# по-четими, когато са записани с думи. Комбинират се особено добре
+# със обилните скоби. (без да се претрупват разбира се).
+
+# 9. Метапрограмирането заобикаля някои иначе неудобни ситуации. Както
+# останалите "магии" от езика, трябва да се използва само при крайна
+# нужда.
+
+# 10.Научих много повече неща от първите 4 домашни, отколкото от вторите.
+# Не ги научих сега, след ретроспективата, а още когато решенията ставаха
+# публични.
+
+# 11.Добре написани custom matcher-и на rspec, могат да изобличат напрактика
+# неоткриваеми грешки.
+
+# 12.Накрая sample.spec се пуска задължително. Понякога с него се хващат
+# най-неочаквани грешки.
+
+# 13.Не си дописваш домашните на друг компютър, особено на такъв без skeptic.
+
+# 14.Научих се да ползвам форума за да си доизяснявам условията. Също така да
+# го следя докоато не изтече времето за задачата.
+
+# 15.Не всички практики удобни за други езици са подходящи за Ruby.
+
+# 16.Научих, че е по-добре, когато текстовият ти редактор има highlight за
+# интерполация в низове.
+
+# 17.Почти всички въпроси могат да бъдат отговорени след бързо посещение на
+# документацията. Документацията е злато.
+
+# 18.Научих, че и привидно сложни проблеми имат прости Ruby решения. Решения,
+# които не биха имали на други езици. Руби извършва много работа в малък
+# по обем код.
+
+# 19.Ruby няма синтаксис за множества?! Има синаксис за всевъзможни неща,
+# но не и за множества. Множествата трябва да се require-ват допълнително.
+# Множествата са неудобни. Може да се работи в тази посока...
+
+# 20.Научих се да ценя Ruby за това което дава, въпреки неговите недостатъци.