Решение на Четвърта задача от Николай Константинов

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

Към профила на Николай Константинов

Резултати

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

Код

REPOSITORY = 'http://github.com/punkie/ruby-retrospective-1'
#Научих от последните 3 домашни следното :
#
#
# Домашно 1:
#
#
#1. Макар и доста субективно погледното употребата на (), в декларирането на метод
# без аргументи, е излишна и e по-добре в тези случаи те да не се слагат.
#2. Array#first и Array#at са доста по-интуитивни и четими операции от [].
#3. self.each е по-добре четимо от each. Най-малкото подсказва на човек, който
# никога не се е занимавал с езици като Ruby/Python, по кaкво се итерира.
#4. Enumerable#еаch_cons е отличен начин да се итерира последователно на група от n на брой елемента
# измежду дадена колекция.(намиране на подсписъци)
#5. Дори и inject да върши страхотна работа в повечето ситуации, в случая (за мен) е по-удачно
# хеш-ът да се създаде на нов ред.
#6. Ако не се създават дълги редове със сложна логика, inline код-а е доста по-красив и за предпочитане
# пред алтернативния вариант.
#
#
# Домашно 2:
#
#
#1. Аrray() е добър начин да се създаде масив от низ.
#2. Използването на общи обекти от два или повече класа е признак за лош дизайн.
#3. По-добре да се ползва готова функция от Enumerable от вида на map, all, any, zip
# отколкото да се итерира с еаch. (Важи за проста логика).
#4. unless е по-добре от if not.
#5. Трябва да се избягва употребата на готови методи завършващи на !. Оverwrite-a може да изиграе лоша шега.
#6. Case и в Ruby e доста по-добре от if/else (за повечето случаи)
#
#
#
# Домашно 3:
#
#
#1. Интерполацията за определени случай е доста по-удобна от простото конкатениране на низове.
#2. Отделенято и на по-малките абстракции в класове е добра практика.
#3. Ruby getters/setters не са необходими навсякъде.
#4. Hash#first e начинът най-елементарен хеш да бъде конвертиран до масив.
#5. Добре е да има модул/клас с константи за по-лесното манипулиране на условията към задачата.
#6. Където е възможно е хубаво да се ползва Symbol#to_proc.
#7. Удачно е в конструктора да влизат проверени данни(затова съм изнесъл валидацията извън него)
#8. Винаги е по-добре да се ползват по-кратките сигнатури на еквивалентни методи(BigDecimal()/to_d)
#
#
# Забележка! В моя fork за домашни 2 и 3 съм взел най-добрите решения според мен и съм добавил/преправил
# неща които съм сметнал за добре. Извинявам се предварително ако съм нарушил някое правило или съм осквернил
# нечий авторски труд, но просто в повечето случаи нямам възможността да присъствам на лекциите и е възможно
# за дадената ситуация да съм пропуснал информация казана от лектор.
#

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

Николай обнови решението на 13.11.2011 23:16 (преди над 12 години)

+REPOSITORY = 'http://github.com/punkie/ruby-retrospective-1'
+#Научих от последните 3 домашни следното :
+#
+#
+# Домашно 1:
+#
+#
+#1. Макар и доста субективно погледното употребата на (), в декларирането на метод
+# без аргументи, е излишна и e по-добре в тези случаи те да не се слагат.
+#2. Array#first и Array#at са доста по-интуитивни и четими операции от [].
+#3. self.each е по-добре четимо от each. Най-малкото подсказва на човек, който
+# никога не се е занимавал с езици като Ruby/Python, по кaкво се итерира.
+#4. Enumerable#еаch_cons е отличен начин да се итерира последователно на група от n на брой елемента
+# измежду дадена колекция.(намиране на подсписъци)
+#5. Дори и inject да върши страхотна работа в повечето ситуации, в случая (за мен) е по-удачно
+# хеш-ът да се създаде на нов ред.
+#6. Ако не се създават дълги редове със сложна логика, inline код-а е доста по-красив и за предпочитане
+# пред алтернативния вариант.
+#
+#
+# Домашно 2:
+#
+#
+#1. Аrray() е добър начин да се създаде масив от низ.
+#2. Използването на общи обекти от два или повече класа е признак за лош дизайн.
+#3. По-добре да се ползва готова функция от Enumerable от вида на map, all, any, zip
+# отколкото да се итерира с еаch. (Важи за проста логика).
+#4. unless е по-добре от if not.
+#5. Трябва да се избягва употребата на готови методи завършващи на !. Оverwrite-a може да изиграе лоша шега.
+#6. Case и в Ruby e доста по-добре от if/else (за повечето случаи)
+#
+#
+#
+# Домашно 3:
+#
+#
+#1. Интерполацията за определени случай е доста по-удобна от простото конкатениране на низове.
+#2. Отделенято и на по-малките абстракции в класове е добра практика.
+#3. Ruby getters/setters не са необходими навсякъде.
+#4. Hash#first e начинът най-елементарен хеш да бъде конвертиран до масив.
+#5. Добре е да има модул/клас с константи за по-лесното манипулиране на условията към задачата.
+#6. Където е възможно е хубаво да се ползва Symbol#to_proc.
+#7. Удачно е в конструктора да влизат проверени данни(затова съм изнесъл валидацията извън него)
+#8. Винаги е по-добре да се ползват по-кратките сигнатури на еквивалентни методи(BigDecimal()/to_d)
+#
+#
+# Забележка! В моя fork за домашни 2 и 3 съм взел най-добрите решения според мен и съм добавил/преправил
+# неща които съм сметнал за добре. Извинявам се предварително ако съм нарушил някое правило или съм осквернил
+# нечий авторски труд, но просто в повечето случаи нямам възможността да присъствам на лекциите и е възможно
+# за дадената ситуация да съм пропуснал информация казана от лектор.
+#