Решение на Пета задача от Александър Антов

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

Към профила на Александър Антов

Резултати

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

Код

REPOSITORY = 'https://github.com/AlexanderAntov/my-ruby-retrospection'
#1 научих, че е възможно да бъде направена проверка за просто число чрез регулярни изрази
#2 научих, че string може да се split-не на съставните му символи, чрез split(//)
#3 започнах да използвам map вместо each do ... action ... end
#4 започнах да използвам reduce вместо each fo ... accumulator += iter .. end
#5 научих, че за методи, не е нужно да използвам return statement, въпреки това продължавам да го правя за прегледност
#6 научих, че може изрази да бъдат разделяни на различни редове чрез символа "/"
#7 научих, че заради ниския приоритет на and, or ... при return трябва предикатът да е в скоби
#8 научих се да ползвам @attribute, но в някои ситуации използвам self.attribute, за да избягвам объркване с локални променливи
#9 научих се, че casecmp == 0 е подобно и по-кратко от ... (insert old code here)
#10 научих се да ползвам each { |iterator| ... }, вместо each do |iterator| { ... }
#11 научих се да форматирам стринга с %
#12 започнах да използвам ? : вместо if else за краткост
#13 научих се да работя с двумерни масиви в Ruby
#14 проучих и класа Matrix като алтернатива на двумерния масив
#15 изпробвах основни ООП техники в Ruby
#16 научих, че дори и в по-кратки блокове case(..) when ... when ... else ... e в пъти по кратко от if else
#17 научих, че nil? е алтернатива на == nil
#18 научих, че в Ruby няма ++, за целта се използва += 1 и post-increment може да се окаже трудно
#19 научих, че съществуват Ruby идиоми (например splat оператора *, който "разбива" масив на съставните му елементи
#20 научих, че .size е еквивалентно на sizeof(...) в C-like езиците

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

Александър обнови решението на 21.01.2014 23:48 (преди около 10 години)

+REPOSITORY = 'https://github.com/AlexanderAntov/my-ruby-retrospection'
+
+#1 научих, че е възможно да бъде направена проверка за просто #число чрез регулярни изрази
+#2 научих, че string може да се split-не на съставните му #символи, чрез split(//)
+#3 започнах да използвам map вместо each do ... action ... end
+#4 започнах да използвам reduce вместо each fo ... accumulator += #iter .. end
+#5 научих, че за методи, не е нужно да използвам return #statement, въпреки това продължавам да го правя за
+#прегледност
+
+#6 научих, че може изрази да бъдат разделяни на различни редове чрез символа "/"
+#7 научих, че заради ниския приоритет на and, or ... при return трябва предикатът да е в скоби
+#8 научих се да ползвам @attribute, но в някои ситуации използвам self.attribute, за да избягвам объркване с локални
+
+#променливи
+#9 научих се, че casecmp == 0 е подобно и по-кратко от ... #(insert old code here)
+#10 научих се да ползвам each { |iterator| ... }, вместо each do #|iterator| { ... }
+
+#11 научих се да форматирам стринга с %
+#12 започнах да използвам ? : вместо if else за краткост
+#13 научих се да работя с двумерни масиви в Ruby
+#14 проучих и класа Matrix като алтернатива на двумерния масив
+#15 изпробвах основни ООП техники в Ruby
+
+#16 научих, че дори и в по-кратки блокове case(..) when ... when #... else ... e в пъти по-кратко от if else
+#17 научих, че nil? е алтернатива на == nil
+#18 научих, че в Ruby няма ++, за целта се използва += 1 и post-#increment може да се окаже трудно
+#19 научих, че съществуват Ruby идиоми (например splat оператора #*, който "разбива" масив на съставните му елементи
+#20 научих, че .size е еквивалентно на sizeof(...) в C-like #езиците

Александър обнови решението на 21.01.2014 23:51 (преди около 10 години)

REPOSITORY = 'https://github.com/AlexanderAntov/my-ruby-retrospection'
-#1 научих, че е възможно да бъде направена проверка за просто #число чрез регулярни изрази
-#2 научих, че string може да се split-не на съставните му #символи, чрез split(//)
+#1 научих, че е възможно да бъде направена проверка за просто число чрез регулярни изрази
+#2 научих, че string може да се split-не на съставните му символи, чрез split(//)
#3 започнах да използвам map вместо each do ... action ... end
-#4 започнах да използвам reduce вместо each fo ... accumulator += #iter .. end
-#5 научих, че за методи, не е нужно да използвам return #statement, въпреки това продължавам да го правя за
+#4 започнах да използвам reduce вместо each fo ... accumulator += iter .. end
+#5 научих, че за методи, не е нужно да използвам return statement, въпреки това
+#продължавам да го правя за
#прегледност
#6 научих, че може изрази да бъдат разделяни на различни редове чрез символа "/"
-#7 научих, че заради ниския приоритет на and, or ... при return трябва предикатът да е в скоби
-#8 научих се да ползвам @attribute, но в някои ситуации използвам self.attribute, за да избягвам объркване с локални
-
-#променливи
-#9 научих се, че casecmp == 0 е подобно и по-кратко от ... #(insert old code here)
+#7 научих, че заради ниския приоритет на and, or ... при return трябва предикатът да е в #скоби
+#8 научих се да ползвам @attribute, но в някои ситуации използвам self.attribute, за да #избягвам объркване с локални променливи
+#9 научих се, че casecmp == 0 е подобно и по-кратко от ... (insert old code here)
#10 научих се да ползвам each { |iterator| ... }, вместо each do #|iterator| { ... }
#11 научих се да форматирам стринга с %
#12 започнах да използвам ? : вместо if else за краткост
#13 научих се да работя с двумерни масиви в Ruby
#14 проучих и класа Matrix като алтернатива на двумерния масив
#15 изпробвах основни ООП техники в Ruby
-#16 научих, че дори и в по-кратки блокове case(..) when ... when #... else ... e в пъти по-кратко от if else
+#16 научих, че дори и в по-кратки блокове case(..) when ... when ... else ... e в пъти по-#кратко от if else
#17 научих, че nil? е алтернатива на == nil
-#18 научих, че в Ruby няма ++, за целта се използва += 1 и post-#increment може да се окаже трудно
-#19 научих, че съществуват Ruby идиоми (например splat оператора #*, който "разбива" масив на съставните му елементи
+#18 научих, че в Ruby няма ++, за целта се използва += 1 и post-increment може да се #окаже трудно
+#19 научих, че съществуват Ruby идиоми (например splat оператора *, който "разбива" #масив на съставните му елементи
#20 научих, че .size е еквивалентно на sizeof(...) в C-like #езиците

Александър обнови решението на 21.01.2014 23:52 (преди около 10 години)

REPOSITORY = 'https://github.com/AlexanderAntov/my-ruby-retrospection'
#1 научих, че е възможно да бъде направена проверка за просто число чрез регулярни изрази
#2 научих, че string може да се split-не на съставните му символи, чрез split(//)
#3 започнах да използвам map вместо each do ... action ... end
#4 започнах да използвам reduce вместо each fo ... accumulator += iter .. end
-#5 научих, че за методи, не е нужно да използвам return statement, въпреки това
-#продължавам да го правя за
-#прегледност
+#5 научих, че за методи, не е нужно да използвам return statement, въпреки това продължавам да го правя за прегледност
#6 научих, че може изрази да бъдат разделяни на различни редове чрез символа "/"
-#7 научих, че заради ниския приоритет на and, or ... при return трябва предикатът да е в #скоби
-#8 научих се да ползвам @attribute, но в някои ситуации използвам self.attribute, за да #избягвам объркване с локални променливи
+#7 научих, че заради ниския приоритет на and, or ... при return трябва предикатът да е в скоби
+#8 научих се да ползвам @attribute, но в някои ситуации използвам self.attribute, за да избягвам объркване с локални променливи
#9 научих се, че casecmp == 0 е подобно и по-кратко от ... (insert old code here)
#10 научих се да ползвам each { |iterator| ... }, вместо each do #|iterator| { ... }
#11 научих се да форматирам стринга с %
#12 започнах да използвам ? : вместо if else за краткост
#13 научих се да работя с двумерни масиви в Ruby
#14 проучих и класа Matrix като алтернатива на двумерния масив
#15 изпробвах основни ООП техники в Ruby
-#16 научих, че дори и в по-кратки блокове case(..) when ... when ... else ... e в пъти по-#кратко от if else
+#16 научих, че дори и в по-кратки блокове case(..) when ... when ... else ... e в пъти по кратко от if else
#17 научих, че nil? е алтернатива на == nil
-#18 научих, че в Ruby няма ++, за целта се използва += 1 и post-increment може да се #окаже трудно
-#19 научих, че съществуват Ruby идиоми (например splat оператора *, който "разбива" #масив на съставните му елементи
+#18 научих, че в Ruby няма ++, за целта се използва += 1 и post-increment може да се окаже трудно
+#19 научих, че съществуват Ruby идиоми (например splat оператора *, който "разбива" масив на съставните му елементи
#20 научих, че .size е еквивалентно на sizeof(...) в C-like #езиците

Александър обнови решението на 21.01.2014 23:55 (преди около 10 години)

REPOSITORY = 'https://github.com/AlexanderAntov/my-ruby-retrospection'
#1 научих, че е възможно да бъде направена проверка за просто число чрез регулярни изрази
#2 научих, че string може да се split-не на съставните му символи, чрез split(//)
#3 започнах да използвам map вместо each do ... action ... end
#4 започнах да използвам reduce вместо each fo ... accumulator += iter .. end
#5 научих, че за методи, не е нужно да използвам return statement, въпреки това продължавам да го правя за прегледност
#6 научих, че може изрази да бъдат разделяни на различни редове чрез символа "/"
#7 научих, че заради ниския приоритет на and, or ... при return трябва предикатът да е в скоби
#8 научих се да ползвам @attribute, но в някои ситуации използвам self.attribute, за да избягвам объркване с локални променливи
#9 научих се, че casecmp == 0 е подобно и по-кратко от ... (insert old code here)
-#10 научих се да ползвам each { |iterator| ... }, вместо each do #|iterator| { ... }
+#10 научих се да ползвам each { |iterator| ... }, вместо each do |iterator| { ... }
#11 научих се да форматирам стринга с %
#12 започнах да използвам ? : вместо if else за краткост
#13 научих се да работя с двумерни масиви в Ruby
#14 проучих и класа Matrix като алтернатива на двумерния масив
#15 изпробвах основни ООП техники в Ruby
#16 научих, че дори и в по-кратки блокове case(..) when ... when ... else ... e в пъти по кратко от if else
#17 научих, че nil? е алтернатива на == nil
#18 научих, че в Ruby няма ++, за целта се използва += 1 и post-increment може да се окаже трудно
#19 научих, че съществуват Ruby идиоми (например splat оператора *, който "разбива" масив на съставните му елементи
-#20 научих, че .size е еквивалентно на sizeof(...) в C-like #езиците
+#20 научих, че .size е еквивалентно на sizeof(...) в C-like езиците

Имаш много проблеми с нарушаване на конвенциите в Ruby, неспазване на skeptic ограниченията и прочее. Сериозни проблеми с идентацията, излишни return клаузи и прочее. За задача-ретроспекция това е лош знак, защото изглежда така, сякаш си отсъствал тялом и духом от курса. Това е ръководството по стил, което трябва да "изядеш с кориците" за защитата на проекта си: https://github.com/fmi/ruby-course-guides/blob/master/course_projects.md#readme

Отделно, не минаваш и тестовете на всички задачи, затова няма как да ти дам точки за тях.

Относно нещата, които си научил:

  • По т. 1 трябва да кажа, че колкото и забавно да е това, не трябва да се ползва в production :)
  • По т. 2, по-добре да се ползва split(''), а най-добре -- chars :)
  • По т. 5 - не го прави. Прегледността в контекста на Ruby изисква да го изпускаш.
  • По т. 6 - всъщност, символът е \ и ако ти се налага да разделяш един ред така на много редове, по-добре помисли за рефакторинг.
  • По 7 - ако изпуснеш return, няма да има нужда от скоби; като общо правило, ако ти се наложи да слагаш скоби, ползвай && и ||.
  • По 20 - не е съвсем еквивалентно :) Най-често връща броя елементи на колекция.

Харесва ми, че си научил неща с тази ретроспекция, надявам се и ти да си доволен от себе си. Като следващи стъпки, бих ти препоръчал да разгледаш още примерен код на колегите си – например, избери си три от решенията на пета задача, на които съм дал най-много точки и разгледай научените от тях неща и написаните от тях решения на задачите. Гарантирано ще ти е полезно.