Решение на Четвърта задача от Мая Лекова

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

Към профила на Мая Лекова

Резултати

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

Код

REPOSITORY = 'http://github.com/MayaLekova/ruby-retrospective-1'
# * Задача 1
# ----------
# 1. Научих, че мога да ползвам == вместо eql?
# 2. Научих, че мога да подавам параметрите на функциите без скоби
# 3. Научих, че чрез оператор [] на хеша мога директно да вкарвам двойка ключ, стойност вместо да ползвам merge!
# 4. Научих, че кога използвам конструктора нa Hash по този начин:
# Hash.new(0)
# получавам хеш с default-на стойност при липсващ ключ 0
# 5. Използвайки т.3 успях да приложа оператора += за метода occurences_count за опростяване на израза
# 6. Научих, че мога да ползвам map вместо each и го приложих за метода to_hash
# 7. Открих апокрифния метод each_cons, който се ползва за "sliding window", за да се реализира subarray_count доста по-елегантно
# * Задача 2
# ----------
# 1. Научих, че ако искам да осигуря достъп само за четене на полетата на клас, мога да ползвам attr_reader вместо attr_accessor и да пиша няколко полета на един ред
# 2. Научих, че мога да викам методи без аргументи като изпускам скобите
# 3. Научих, че мога да сглобявам по-сложни логически условия с and/or и така направих кода на Song.match_tags по-ясен
# 4. Научих, че за масив мога да ползвам оператор += вместо concat
# 5. Подобрих метода Collection.add_to_songs като вместо select/map претърсих само еднократно всички песни с map
# * Задача 3
# ----------
# 1. Използвах единствена функция за форматиране на BigDecimal-ите в желания вид - monkey patch-нах класа BigDecimal
# 2. Научих, че мога да подавам на inject символ, обозначаващ метод и по този начин опростих сглобяването на string-a в invoice
# 3. Използвах sprintf за да постигна нужното форматиране на дробни числа
# 4. Премахнах използването на truncate, заради който се губеше точност
# 5. Научих, че мога да присвоявам на стойност две променливи едновременно и използвах това в initialize методите на Package и Threshold класовете
# 6. Използвах self, за да конструирам количката по данните в инстанция на инвентара
# 7. Monkey-patch-нах класа String за форматиране на ред от касовата бележка, за да не повтарям навсякъде константата за подравняване
# 8. Направих смятането на общата цена в метода raw_total много по-елегантно, като използвах inject

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

Мая обнови решението на 14.11.2011 13:13 (преди над 12 години)

+REPOSITORY = 'http://github.com/MayaLekova/ruby-retrospective-1'
+
+# * Задача 1
+# ----------
+# 1. Научих, че мога да ползвам == вместо eql?
+# 2. Научих, че мога да подавам параметрите на функциите без скоби
+# 3. Научих, че чрез оператор [] на хеша мога директно да вкарвам двойка ключ, стойност вместо да ползвам merge!
+# 4. Научих, че кога използвам конструктора нa Hash по този начин:
+ # Hash.new(0)
+# получавам хеш с default-на стойност при липсващ ключ 0
+# 5. Използвайки т.3 успях да приложа оператора += за метода occurences_count за опростяване на израза
+# 6. Научих, че мога да ползвам map вместо each и го приложих за метода to_hash
+# 7. Открих апокрифния метод each_cons, който се ползва за "sliding window", за да се реализира subarray_count доста по-елегантно
+
+
+# * Задача 2
+# ----------
+# 1. Научих, че ако искам да осигуря достъп само за четене на полетата на клас, мога да ползвам attr_reader вместо attr_accessor и да пиша няколко полета на един ред
+# 2. Научих, че мога да викам методи без аргументи като изпускам скобите
+# 3. Научих, че мога да сглобявам по-сложни логически условия с and/or и така направих кода на Song.match_tags по-ясен
+# 4. Научих, че за масив мога да ползвам оператор += вместо concat
+# 5. Подобрих метода Collection.add_to_songs като вместо select/map претърсих само еднократно всички песни с map
+
+# * Задача 3
+# ----------
+# 1. Използвах единствена функция за форматиране на BigDecimal-ите в желания вид - monkey patch-нах класа BigDecimal
+# 2. Научих, че мога да подавам на inject символ, обозначаващ метод и по този начин опростих сглобяването на string-a в invoice
+# 3. Използвах sprintf за да постигна нужното форматиране на дробни числа
+# 4. Премахнах използването на truncate, заради който се губеше точност
+# 5. Научих, че мога да присвоявам на стойност две променливи едновременно и използвах това в initialize методите на Package и Threshold класовете
+# 6. Използвах self, за да конструирам количката по данните в инстанция на инвентара
+# 7. Monkey-patch-нах класа String за форматиране на ред от касовата бележка, за да не повтарям навсякъде константата за подравняване
+# 8. Направих смятането на общата цена в метода raw_total много по-елегантно, като използвах inject