Решение на Пета задача от Иван Георгиев

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

Към профила на Иван Георгиев

Код

REPOSITORY = 'http://github.com/chivankich/ruby-retrospective-2'
# Двадесет неща, които научих.
#
# 1. Не е хубаво да дефинирам нов метод в друг такъв. Не е добър стил, а и могат да възникнат много
# проблеми като цяло. По-добре повече отделни и по-малко вложени методи.
# 2. Не е необходимо да извиквам даден метод на обект със self и името на метода. Мога просто да извикам
# метода. Разбира се, става въпрос за работа вътре в методи, класове и така нататък.
# 3. Резултатът от даден метод е последният оценен израз. Затова не е необходимо да създавам нови променливи,
# които след това да връщам.
# 4. Ако трябва да правим селекция на определени обекти, по-добре да използваме select, отколкото обхождане
# с each и избиране на елементите, удовлетворяващи условието.
# 5. Като цяло Ruby ни предоставя широк набор от методи и ние трябва да се възползваме от тях, а не да дефинираме
# дълги и сложни конструкции, които вършат същата работа.
# 6. В програма с повече класове и модули не трябва да объркваме естесвената логика. Всеки клас трябва да "знае"
# достатъчно и не прекалено за същността на останалите класове.
# 7. Хубаво е да ползваме блокове и ламбди, където може, защото така се постига известна простота на кода ни. Те
# са изключително полезни, когато имаме повече от един класове или модули, взаимодействащи помежду си.
# 8. Добре е да си улесним работата, като предефинираме някои оператори за определени класове дори и да не е указано
# това явно в някои задачи. Така спестяваме много проверки и излишен код.
# 9. Хубаво е един метод да прави точно едно нещо, да няма странични ефекти и да не ни изпраща към други методи,
# които да продължават обработката върху дадения обект.
# 10. Където е възможно е желателно да ползваме конструкцията case. По този начин кодът ни става по-четим,
# по-разбираем.
# 11. Ако имаме някаква йерархия от класове и наследници, добре е да ползваме методите, дефинирани в родителите,
# ако е възможно. Така кодът ни става dry.
# 12. Хубаво е да преценим дали искаме да работим с instance-променливите или със селектори и мутатори (ако са
# зададени такива, защото могат да възникнат грешки при някои ситуации.
# 13. На места е хубаво да дефинираме и използваме константи (няколко или повече), за да няма повторения в кода.
# Освен така кодът е по-четим и по-лесно можем да правим промени по него.
# 14. Когато е възможно е добре да извикваме каскадно методи един след друг върху даден обект, а не да присвояваме
# на нов обект някакъв резултат и след това да работим с него (резултата). (Като цяло последното зависи от си-
# туацията, има моменти, когато задължително трябва да направим присвояването, за да не се промени обектът, вър-
# ху който оперираме от началото).
# 15. Преди не избирах подходящи имена на променливите или функциите, сега се старая да ги именувам с най-подходящите
# според случая.
# 16. Преди не спазвах стриктно конвенциите за писане на Ruby код. Сега се опитвам да ги спазвам колкото се може
# повече.
# 17. Ако искаме да мутираме всички елементи от даден списък например, е добре да ползваме map вместо да обхождаме
# списъка с each.
# 18. Преди не ползвах unless, а if not. Сега вече го ползвам.
# 19. Преди не ползвах толкова именовани групи, когато работих с регулярни изрази. Сега ги ползвам по-често.
# 20. Преди ползвах доста често return. Сега го ползвам само когато искам да напусна преждевременно някой метод.

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

Иван обнови решението на 27.12.2012 16:48 (преди около 12 години)

+REPOSITORY = 'http://github.com/chivankich/ruby-retrospective-2'
+
+# Двадесет неща, които научих.
+#
+# 1. Не е хубаво да дефинирам нов метод в друг такъв. Не е добър стил, а и могат да възникнат много
+# проблеми като цяло. По-добре повече отделни и по-малко вложени методи.
+# 2. Не е необходимо да извиквам даден метод на обект със self и името на метода. Мога просто да извикам
+# метода. Разбира се, става въпрос за работа вътре в методи, класове и така нататък.
+# 3. Резултатът от даден метод е последният оценен израз. Затова не е необходимо да създавам нови променливи,
+# които след това да връщам.
+# 4. Ако трябва да правим селекция на определени обекти, по-добре да използваме select, отколкото обхождане
+# с each и избиране на елементите, удовлетворяващи условието.
+# 5. Като цяло Ruby ни предоставя широк набор от методи и ние трябва да се възползваме от тях, а не да дефинираме
+# дълги и сложни конструкции, които вършат същата работа.
+# 6. В програма с повече класове и модули не трябва да объркваме естесвената логика. Всеки клас трябва да "знае"
+# достатъчно и не прекалено за същността на останалите класове.
+# 7. Хубаво е да ползваме блокове и ламбди, където може, защото така се постига известна простота на кода ни. Те
+# са изключително полезни, когато имаме повече от един класове или модули, взаимодействащи помежду си.
+# 8. Добре е да си улесним работата, като предефинираме някои оператори за определени класове дори и да не е указано
+# това явно в някои задачи. Така спестяваме много проверки и излишен код.
+# 9. Хубаво е един метод да прави точно едно нещо, да няма странични ефекти и да не ни изпраща към други методи,
+# които да продължават обработката върху дадения обект.
+# 10. Където е възможно е желателно да ползваме конструкцията case. По този начин кодът ни става по-четим,
+# по-разбираем.
+# 11. Ако имаме някаква йерархия от класове и наследници, добре е да ползваме методите, дефинирани в родителите,
+# ако е възможно. Така кодът ни става dry.
+# 12. Хубаво е да преценим дали искаме да работим с instance-променливите или със селектори и мутатори (ако са
+# зададени такива, защото могат да възникнат грешки при някои ситуации.
+# 13. На места е хубаво да дефинираме и използваме константи (няколко или повече), за да няма повторения в кода.
+# Освен така кодът е по-четим и по-лесно можем да правим промени по него.
+# 14. Когато е възможно е добре да извикваме каскадно методи един след друг върху даден обект, а не да присвояваме
+# на нов обект някакъв резултат и след това да работим с него (резултата). (Като цяло последното зависи от си-
+# туацията, има моменти, когато задължително трябва да направим присвояването, за да не се промени обектът, вър-
+# ху който оперираме от началото).
+# 15. Преди не избирах подходящи имена на променливите или функциите, сега се старая да ги именувам с най-подходящите
+# според случая.
+# 16. Преди не спазвах стриктно конвенциите за писане на Ruby код. Сега се опитвам да ги спазвам колкото се може
+# повече.
+# 17. Ако искаме да мутираме всички елементи от даден списък например, е добре да ползваме map вместо да обхождаме
+# списъка с each.
+# 18. Преди не ползвах unless, а if not. Сега вече го ползвам.
+# 19. Преди не ползвах толкова именовани групи, когато работих с регулярни изрази. Сега ги ползвам по-често.
+# 20. Преди ползвах доста често return. Сега го ползвам само когато искам да напусна преждевременно някой метод.