Решение на Пета задача от Пламен Тотев

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

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

Код

REPOSITORY = 'https://github.com/plamentotev/ruby-retrospective-2'
# Първа задача
# ==================
#
# 1. За решението на group_values от първа задача използването на result[value] ||= []
# е по-удачно от Hash.new { |hash, key| hash[key] = [] }, защото така върнатият Hash
# има стандарнтното поведение на Hash, тоест за несъществуващ ключ върща nil, а не празен масив.
#
# 2. Използването на abs, навсякъде където се среща числото, във prime_divisors
# е по-четливо от return abs.prime_divisors if self < 0
#
# 3. Използването на #divisors при намирането на всички прости числа по-скоро не е небходимо и
# и не увеличава четливостта, тако в същото време вуличава (ненужно) времето за изпълнение.
#
# Втора задача
# ==================
#
# 4. Присвояването на отделене ред, на параметрите подадени на конструктура, е по-четливо
# от присвояването на един ред.
#
# 5. Блок може да се предава като параметър на коструктор.
#
# 6. Може да се използва Array#| вместо Array#+ и Array#uniq
#
# 7. Може да се използва Enumerable#each_slice за да се вземат като параметри
# няколко реда, разделени с String#lines
#
# Трета задача
# ==================
#
# 8. Коструктурите се наследяват и така инициалнизацията на операторите и функциите лесно може
# да премести в съответният калс за унарна и бинарна операция.
#
# 9. class.new може да бъде използвано за съдздаването инстанция на клас от родителя
# без да се знае конкретният наследник
#
# 10. Четоди, които имат сходна фукнционалност като #exact и #simplify
# е най-добре да въдат изведени в родителя и тези наследници, които имат различно поведение
# просто да променят или разширяват поведението на родителя
#
# 11. По-четливо е, ако се използват готови обекти като Number#one и Number#zero,
# отколкото да се зъздават всеки път
#
# Четвърта задача
# ==================
#
# 12. По-четливо е регулярните изрази да се изнесат като константи на модул.
#
# 13. #{ИМЕ_НА_ПРОМЕНЛИВА} може да се използва в регулярни изрази за да
# взмъкне един регулярен израз по средата на друг регулярен израз
# подобрявайки преизпозваемосста на изразите и четимостта на кода.
#
# 14. Използване на backtracking за определяне на коя част от телефона
# е международен код и коя е част от телефона
#

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

Пламен обнови решението на 25.12.2012 19:32 (преди над 11 години)

+REPOSITORY = 'https://github.com/plamentotev/ruby-retrospective-2'
+
+# Първа задача
+# ==================
+#
+# 1. За решението на group_values от първа задача използването на result[value] ||= []
+# е по-удачно от Hash.new { |hash, key| hash[key] = [] }, защото така върнатият Hash
+# има стандарнтното поведение на Hash, тоест за несъществуващ ключ върща nil, а не празен масив.
+#
+# 2. Използването на abs, навсякъде където се среща числото, във prime_divisors
+# е по-четливо от return abs.prime_divisors if self < 0
+#
+# 3. Използването на #divisors при намирането на всички прости числа по-скоро не е небходимо и
+# и не увеличава четливостта, тако в същото време вуличава (ненужно) времето за изпълнение.
+#
+# Втора задача
+# ==================
+#
+# 4. Присвояването на отделене ред, на параметрите подадени на конструктура, е по-четливо
+# от присвояването на един ред.
+#
+# 5. Блок може да се предава като параметър на коструктор.
+#
+# 6. Може да се използва Array#| вместо Array#+ и Array#uniq
+#
+# 7. Може да се използва Enumerable#each_slice за да се вземат като параметри
+# няколко реда, разделени с String#lines
+#
+# Трета задача
+# ==================
+#
+# 8. Коструктурите се наследяват и така инициалнизацията на операторите и функциите лесно може
+# да премести в съответният калс за унарна и бинарна операция.
+#
+# 9. class.new може да бъде използвано за съдздаването инстанция на клас от родителя
+# без да се знае конкретният наследник
+#
+# 10. Четоди, които имат сходна фукнционалност като #exact и #simplify
+# е най-добре да въдат изведени в родителя и тези наследници, които имат различно поведение
+# просто да променят или разширяват поведението на родителя
+#
+# 11. По-четливо е, ако се използват готови обекти като Number#one и Number#zero,
+# отколкото да се зъздават всеки път
+#
+# Четвърта задача
+# ==================
+#
+# 12. По-четливо е регулярните изрази да се изнесат като константи на модул.
+#
+# 13. #{ИМЕ_НА_ПРОМЕНЛИВА} може да се използва в регулярни изрази за да
+# взмъкне един регулярен израз по средата на друг регулярен израз
+# подобрявайки преизпозваемосста на изразите и четимостта на кода.
+#
+# 14. Използване на backtracking за определяне на коя част от телефона
+# е международен код и коя е част от телефона
+#