Решение на Ретроспекция от Христина Христова

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

Към профила на Христина Христова

Резултати

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

Код

REPOSITORY = 'https://github.com/Hrisi/python-retrospective'
# Неща, които научих:
#
#1. В Python True and "string1" връща 'string1' и False and 'string1' връща
# False, а операция or връща лявата стойност, ако тя e истина, без да се
# интересува от дясната, но ако лявата е False, то or връща дясната.
# Следователно return condition and HOROSCOPE[month - 1][1] or
# HOROSCOPE[month - 2][1], тук condition = HOROSCOPE[month - 1][0] <= day),
# ще върне HOROSCOPE[month - 1][1] или HOROSCOPE[month - 2][1], в зависимост
# от това дали условието condition e вярно или не.
#
# 2. Когато изнасям списък, тюпъл и т.н. извън функция (за да не се дефинират
# при всяко нейно извикване) е по-добре той да е константа. Както научих,
# по-добре е, ако се използват string-ове, те да се изнасят като константи,
# тъй като по този начин лесно могат да се променят при нужда, като се
# изключва вероятността в противен случай да не променим низовете на някои
# от местата, където ме ги използвали.
#
# 3. Функциите, които са дефинирани в други функции и които могат да се
# преизползват, се изнасят извън тях. Това би направило кода по-четим.В
# противен случай може в даден момент да имаме дефинирани няколко функции
# във функции, които да вършат едно исъщо нещо - т.е., да имаме повтаряне на
# код, вместо преизползването му.
#
# 4. Добра практика е да именовам променливите си по-смислено:x -> argument;
# f,g -> fun1, func2; i -> elements.
#
# 5. Считам, че в оригиналното решение на задача 3 списъкът list_of_children
# е по-удачно бъде "защитена" променлива _children, тъй като в него само се
# добавят нови деца, а не би трябвало да се променят текущите. Също така
# промяна по оригиналния списък list_of_children на даден обект, като
# например изтриване на дете, не би довела до промяна на майката/бащата на
# това дете, което ще повлияе на функционалността.
#
# 6. В задача 4 дефинирам константи WIN_CONFIGURATION, ROW и COLUMN, за да
# добавя функционалността да се създава дъска с произволен брой колони и
# редове, което става бързо и лесно само чрез промяна на константите. Освен
# това може да се създават различни "правила" на играта чрез добавяне на
# още печеливши конфигурации в WIN_CONFIGURATION. Хубавото при този подход
# е, че логиката по-надолу в програмата се запазва и не е нужно да променяме
# друго, освен константите. Дефинираме и BOARD_VALUES, за да имаме опцията
# да променим стойностите по подразбиране за играта "X" и "O", ако желаем.

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

Христина обнови решението на 27.04.2013 19:39 (преди над 11 години)

+REPOSITORY = 'https://github.com/Hrisi/python-retrospective'
+
+
+# Неща, които научих:
+#
+#1. В Python True and "string1" връща 'string1' и False and 'string1' връща
+# False, а операция or връща лявата стойност, ако тя e истина, без да се
+# интересува от дясната, но ако лявата е False, то or връща дясната.
+# Следователно return condition and HOROSCOPE[month - 1][1] or
+# HOROSCOPE[month - 2][1], тук condition = HOROSCOPE[month - 1][0] <= day),
+# ще върне HOROSCOPE[month - 1][1] или HOROSCOPE[month - 2][1], в зависимост
+# от това дали условието condition e вярно или не.
+#
+# 2. Когато изнасям списък, тюпъл и т.н. извън функция (за да не се дефинират
+# при всяко нейно извикване) е по-добре той да е константа. Както научих,
+# по-добре е, ако се използват string-ове, те да се изнасят като константи,
+# тъй като по този начин лесно могат да се променят при нужда, като се
+# изключва вероятността в противен случай да не променим низовете на някои
+# от местата, където ме ги използвали.
+#
+# 3. Функциите, които са дефинирани в други функции и които могат да се
+# преизползват, се изнасят извън тях. Това би направило кода по-четим.В
+# противен случай може в даден момент да имаме дефинирани няколко функции
+# във функции, които да вършат едно исъщо нещо - т.е., да имаме повтаряне на
+# код, вместо преизползването му.
+#
+# 4. Добра практика е да именовам променливите си по-смислено:x -> argument;
+# f,g -> fun1, func2; i -> elements.
+#
+# 5. Считам, че в оригиналното решение на задача 3 списъкът list_of_children
+# е по-удачно бъде "защитена" променлива _children, тъй като в него само се
+# добавят нови деца, а не би трябвало да се променят текущите. Също така
+# промяна по оригиналния списък list_of_children на даден обект, като
+# например изтриване на дете, не би довела до промяна на майката/бащата на
+# това дете, което ще повлияе на функционалността.
+#
+# 6. В задача 4 дефинирам константи WIN_CONFIGURATION, ROW и COLUMN, за да
+# добавя функционалността да се създава дъска с произволен брой колони и
+# редове, което става бързо и лесно само чрез промяна на константите. Освен
+# това може да се създават различни "правила" на играта чрез добавяне на
+# още печеливши конфигурации в WIN_CONFIGURATION. Хубавото при този подход
+# е, че логиката по-надолу в програмата се запазва и не е нужно да променяме
+# друго, освен константите. Дефинираме и BOARD_VALUES, за да имаме опцията
+# да променим стойностите по подразбиране за играта "X" и "O", ако желаем.