Решение на Ретроспекция от Георги Шопов

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

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

Резултати

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

Код

REPOSITORY = 'https://github.com/gshopov/python-retrospective'
# 1. Съгласно PEP8: "Separate top-level function and class definitions with two blank lines.".
# Това не беше спазено в домашно 1.
#
# 2. Прочетох PEP257, от където научих за правилното форматиране на docstring-ове. Съсласно този документ:
# всички модули, функции и класове експортнати от модули и public методи(включителни и __init__) на класове
# трябва да имат docstring-ове. Поправките са в домашно 2, 3, 4.
#
# 3. Промених лоши имена като which_month_part, new_args и arg_set. Промените са в домашно 1 и 2(zip_with функцията).
#
# 4. В домашно 1 по-разбираемо е MONTH_DIVIDERS и ZODIAK_SIGNS да се обединят, защото трудно се разбира връзката между тях.
#
# 5. "Readability counts." Затова промених кода в what_is_my_sign, въпреки че сега се правят проверки, които
# бяха избегнати в предходното решение.
#
# 6. Промяната в groupby функцията от домашно 2 е поради факта, че когато итерираме, за да създадем някаква
# колекция, по-четимо e ако се направи със съответния comprehension.
#
# 7. Поправих cache функцията да работи при cache_size=0 (имах неминаващ тест).
#
# 8. Научих за декоратора @lru_cache, с който кода става по-четим и със сигуност е реализиран по-добре.
#
# 9. Кода става по-четим, ако си дефинирам identity фунция вместо да използвам ламбда.
#
# 10.В домашно 3 имам повтарящ се код => задължително го изнасям в отделна функция.
#
# 11.Съгласно PEP8 private имената на член-данните и методите на класовете се предшестват от '_'. Използвал съм това правило
# при именуването на новата функция.
#
# 12.Кода става по-четим и разбираем, ако използвам if self.mother(father) is not None вместо if self.mother(father).
#
# 13.Default-ната стойност на gender в children метода беше 'MF', което не се знае какво точно означава. Затова го смених на None.
#
# 14.Използвам съответно set и list comprehension за self.parents и children метода, поради същата причина като в 6.
#
# 15.В домашно 4 по-логично е да имам атрибут board_representation извън __init__, защото всяка инстанция на класа
# трябва да има начин, по който да се визуализира.
#
# 16.Научих, че мога да използвам unpack-ването чрез **kwargs на места като в __str__, с което решението става доста по-елегантно.
#
# 17.По-кратка проверка за game status-a е с регулярен израз, но това не e правилната употреба на регулярните изрази.
#
# 18.Научих как се слагат коментари в регулярните изрази, което до някъде ги прави по-четими.
#
# 19.Добавих съобщения при raise-ване на exception-ите, за да се разбира какъв е проблемът.
#
# 20.Докато се опитвах да си подобря решенията научих и за @property, @setter, @getter, @deleter и @staticmethod, но не намерих
# подходящо място в решенията ми, за да ги използвам.

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

Георги обнови решението на 25.04.2013 19:54 (преди около 11 години)

+REPOSITORY = 'https://github.com/gshopov/python-retrospective'
+
+
+# 1. Съгласно PEP8: "Separate top-level function and class definitions with two blank lines.".
+# Това не беше спазено в домашно 1.
+#
+# 2. Прочетох PEP257, от където научих за правилното форматиране на docstring-ове. Съсласно този документ:
+# всички модули, функции и класове експортнати от модули и public методи(включителни и __init__) на класове
+# трябва да имат docstring-ове. Поправките са в домашно 2, 3, 4.
+#
+# 3. Промених лоши имена като which_month_part, new_args и arg_set. Промените са в домашно 1 и 2(zip_with функцията).
+#
+# 4. В домашно 1 по-разбираемо е MONTH_DIVIDERS и ZODIAK_SIGNS да се обединят, защото трудно се разбира връзката между тях.
+#
+# 5. "Readability counts." Затова промених кода в what_is_my_sign, въпреки че сега се правят проверки, които
+# бяха избегнати в предходното решение.
+#
+# 6. Промяната в groupby функцията от домашно 2 е поради факта, че когато итерираме, за да съсздадем някаква
+# колекция, по-четимо ако се направи със съответния comprehension.
+#
+# 7. Поправих cache функцията да работи при cache_size=0 (имах неминаващ тест).
+#
+# 8. Научих за декоратора @lru_cache, с който кода става по-четим и със сигуност е реализиран по-добре.
+#
+# 9. Кода става по-четим, ако си дефинирам identity фунция вместо да използвам ламбда.
+#
+# 10.В домашно 3 имам повтарящ се код => задължително го изнасям в отделна функция.
+#
+# 11.Съгласно PEP8 private имената на член-данните и методите на класовете се предшестват от '_'. Използвам съм това правило
+# при именуването на новата функция.
+#
+# 12.Кода става по-четим и разбираем, ако използвам if self.mother(father) is not None вместо if self.mother.
+#
+# 13.Default-ната стойност на gender в children метода беше 'MF', което не се знае какво точно означава. Затова го смених на None.
+#
+# 14.Използвам съответно set и list comprehension за self.parents и children метода, поради същата причина като в 6.
+#
+# 15.В домашно 4 по-логично е да имам атрибут board_representation извън __init__, защото всяка инстанция на класа
+# трябва да има начин, по който да се визуализира.
+#
+# 16.Научих, че мога да използвам unzip-ването чрез **kwargs на места като в __str__, с което решението става доста по-елегантно.
+#
+# 17.По-кратка проверка за game status-a е с регулярен израз, но това не правилната употреба на регулярните изрази.
+#
+# 18.Научих как се слагат коментари в регулярните изрази, което до някъде ги прави по-четими.
+#
+# 19.Добавих съобщения при raise-ване на exception-ите, за да се разбира какъв е проблемът.
+#
+# 20.Докато се опитвах да си подобря решенията научих и за @property, @setter, @getter, @deleter и @staticmethod, но не намерих
+# подходящо място в решенията ми, за да ги използвам.

Георги обнови решението на 29.04.2013 16:04 (преди почти 11 години)

REPOSITORY = 'https://github.com/gshopov/python-retrospective'
# 1. Съгласно PEP8: "Separate top-level function and class definitions with two blank lines.".
# Това не беше спазено в домашно 1.
#
# 2. Прочетох PEP257, от където научих за правилното форматиране на docstring-ове. Съсласно този документ:
# всички модули, функции и класове експортнати от модули и public методи(включителни и __init__) на класове
# трябва да имат docstring-ове. Поправките са в домашно 2, 3, 4.
#
# 3. Промених лоши имена като which_month_part, new_args и arg_set. Промените са в домашно 1 и 2(zip_with функцията).
#
# 4. В домашно 1 по-разбираемо е MONTH_DIVIDERS и ZODIAK_SIGNS да се обединят, защото трудно се разбира връзката между тях.
#
# 5. "Readability counts." Затова промених кода в what_is_my_sign, въпреки че сега се правят проверки, които
# бяха избегнати в предходното решение.
#
-# 6. Промяната в groupby функцията от домашно 2 е поради факта, че когато итерираме, за да съсздадем някаква
-# колекция, по-четимо ако се направи със съответния comprehension.
+# 6. Промяната в groupby функцията от домашно 2 е поради факта, че когато итерираме, за да създадем някаква
+# колекция, по-четимо e ако се направи със съответния comprehension.
#
# 7. Поправих cache функцията да работи при cache_size=0 (имах неминаващ тест).
#
# 8. Научих за декоратора @lru_cache, с който кода става по-четим и със сигуност е реализиран по-добре.
#
# 9. Кода става по-четим, ако си дефинирам identity фунция вместо да използвам ламбда.
#
# 10.В домашно 3 имам повтарящ се код => задължително го изнасям в отделна функция.
#
-# 11.Съгласно PEP8 private имената на член-данните и методите на класовете се предшестват от '_'. Използвам съм това правило
+# 11.Съгласно PEP8 private имената на член-данните и методите на класовете се предшестват от '_'. Използвал съм това правило
# при именуването на новата функция.
#
-# 12.Кода става по-четим и разбираем, ако използвам if self.mother(father) is not None вместо if self.mother.
+# 12.Кода става по-четим и разбираем, ако използвам if self.mother(father) is not None вместо if self.mother(father).
#
# 13.Default-ната стойност на gender в children метода беше 'MF', което не се знае какво точно означава. Затова го смених на None.
#
# 14.Използвам съответно set и list comprehension за self.parents и children метода, поради същата причина като в 6.
#
# 15.В домашно 4 по-логично е да имам атрибут board_representation извън __init__, защото всяка инстанция на класа
# трябва да има начин, по който да се визуализира.
#
-# 16.Научих, че мога да използвам unzip-ването чрез **kwargs на места като в __str__, с което решението става доста по-елегантно.
+# 16.Научих, че мога да използвам unpack-ването чрез **kwargs на места като в __str__, с което решението става доста по-елегантно.
#
-# 17.По-кратка проверка за game status-a е с регулярен израз, но това не правилната употреба на регулярните изрази.
+# 17.По-кратка проверка за game status-a е с регулярен израз, но това не e правилната употреба на регулярните изрази.
#
# 18.Научих как се слагат коментари в регулярните изрази, което до някъде ги прави по-четими.
#
# 19.Добавих съобщения при raise-ване на exception-ите, за да се разбира какъв е проблемът.
#
# 20.Докато се опитвах да си подобря решенията научих и за @property, @setter, @getter, @deleter и @staticmethod, но не намерих
# подходящо място в решенията ми, за да ги използвам.