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

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

Към профила на Милан Миланов

Резултати

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

Код

REPOSITORY = 'https://github.com/milanov/python-retrospective'
# Двадесет неща, които научих.
#
# Общи:
# 1) Малко дисциплина. Въпреки заканите на първата лекция, не очаквах да е наистина
# токова сериозен курса.
# 2) Много по-добре е домашните да се предават рано отколкото късно. Дори и да не бъдат
# максимално изпипани feedback-а от преподавател е много по-ценен от търсене в Google.
# 3) Да се замислям как си именовам променливите/методите/класовете/всичко.
# 4) Научих се да си стилизирам кода по-добре или по-скоро да не си държа прекалено много
# на собствения стил (да не навлизам в прекалено тесни рамки).
# 5) Затвърдих знанията и разбиранията си за писането на тестове и TDD като цяло.
# 6) Колко хубаво е едно community да си има style guide. Решенията на всички, макар и различни,
# са толкова по-разбираеми, когато са написани с еднакъв стил.
#
# Първа задача:
# 7) Да си изнасям константите извън методите, както и да ги SCREAMING_SNAKE_CASE-вам.
# 8) Винаги да си мисля за по-оптимално решение. В моя случай реших, че съм намерил "най-доброто"
# далеч преди срока за предаване, което се оказа не толкова вярно.
# 9) Употребата на отрицателни индекси за достъп до елементите на наредена колекция (първият
# елемент 0 минус 1 ни дава точно последния)
# 10) Да използвам tuple-и, когато смятам, че информацията в дадена колекция няма да се променя.
#
# Втора задача:
# 11) Съществува синтаксис за генератори, подобен на list comprehension-ите и по-кратък и разбираем
# от просто yield в цикъл.
# 12) Модула OrderedDict ни предоставя лесен FIFO речник.
# 13) Да си чета условията по-добре, защото един от методите ми беше (полу)грешен, защото си бях разбрал
# условието грешно. Добре че тестовите ви не го хванаха. :)
#
# Трета задача:
# 14) Да започнам имената на private методите/променливите ми с две долни черти.
# 15) Да правя методите статични, когато са класови, но не използват никакви данни от инстанциите.
# 16) Затвърдих идеята за преизползването на методите в класовете ми. Така нещата стават по-елегантно, а и
# има по-малко код, който трябва да се тества/поддържа/дебъгва.
#
# Четвърта задача:
# 17) Как да raise-вам exception-и и как да създавам свой собствени.
# 18) Как да форматирам елегантно информацията, съдържаща се като стойности в речник.
# 19) Метода #all, който е много удобен начин за проверка за само True стойности.
# 20) Метода #pop с параметър на list, който може да служи за лесно
# създаване на FIFO структури.

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

Милан обнови решението на 29.04.2013 15:45 (преди над 11 години)

+REPOSITORY = 'https://github.com/milanov/python-retrospective'
+
+# Двадесет неща, които научих.
+#
+# Общи:
+# 1) Малко дисциплина. Въпреки заканите на първата лекция, не очаквах да е наистина
+# токова сериозен курса.
+# 2) Много по-добре е домашните да се предават рано отколкото късно. Дори и да не бъдат
+# максимално изпипани feedback-а от преподавател е много по-ценен от търсене в Google.
+# 3) Да се замислям как си именовам променливите/методите/класовете/всичко.
+# 4) Научих се да си стилизирам кода по-добре или по-скоро да не си държа прекалено много
+# на собствения стил (да не навлизам в прекалено тесни рамки).
+# 5) Затвърдих знанията и разбиранията си за писането на тестове и TDD като цяло.
+# 6) Колко хубаво е едно community да си има style guide. Решенията на всички, макар и различни,
+# са толкова по-разбираеми, когато са написани с еднакъв стил.
+#
+# Първа задача:
+# 7) Да си изнасям константите извън методите, както и да ги SCREAMING_SNAKE_CASE-вам.
+# 8) Винаги да си мисля за по-оптимално решение. В моя случай реших, че съм намерил "най-доброто"
+# далеч преди срока за предаване, което се оказа не толкова вярно.
+# 9) Употребата на отрицателни индекси за достъп до елементите на наредена колекция (първият
+# елемент 0 минус 1 ни дава точно последния)
+# 10) Да използвам tuple-и, когато смятам, че информацията в дадена колекция няма да се променя.
+#
+# Втора задача:
+# 11) Съществува синтаксис за генератори, подобен на list comprehension-ите и по-кратък и разбираем
+# от просто yield в цикъл.
+# 12) Модула OrderedDict ни предоставя лесен FIFO речник.
+# 13) Да си чета условията по-добре, защото един от методите ми беше (полу)грешен, защото си бях разбрал
+# условието грешно. Добре че тестовите ви не го хванаха. :)
+#
+# Трета задача:
+# 14) Да започнам имената на private методите/променливите ми с две долни черти.
+# 15) Да правя методите статични, когато са класови, но не използват никакви данни от инстанциите.
+# 16) Затвърдих идеята за преизползването на методите в класовете ми. Така нещата стават по-елегантно, а и
+# има по-малко код, който трябва да се тества/поддържа/дебъгва.
+#
+# Четвърта задача:
+# 17) Как да raise-вам exception-и и как да създавам свой собствени.
+# 18) Как да форматирам елегантно информацията, съдържаща се като стойности в речник.
+# 19) Метода #all, който е много удобен начин за проверка за само True стойности.
+# 20) Метода #pop с параметър на list, който може да служи за лесно
+# създаване на FIFO структури.