Александър обнови решението на 29.04.2013 15:28 (преди над 11 години)
+REPOSITORY = 'https://github.com/radmanovi4/python-retrospective'
+
+# 20 неща, които научих:
+
+# 1. Хубаво е всички данни, които не търпят промяна, да се извеждат като константа, вместо локална променлива.
+# 2. Булевите променливи звучат по-булеви с is_ отпред.
+# 3. defaultdict (от collections).
+# 4. Да избягвам да кръщавам локални променливи result.
+# 5. Приоритет при кръщаването на локални променливи е точността за това какво съдържа, а не краткостта на името.
+# 6. Да не забравям да предвиждам частните случаи на подадени аргументи (всички провалени тестове са заради това)
+# 7. Задължителна проверка за принадлежност на желания от нас клас при подаден аргумент.
+# 8. Инверсната форма на if е по-интуитивно разбираема при четене на кода.
+# 9. Ако поведението на фуцнкция е в силна зависимост от подадения й аргумент, удачно е името й да го указва. Например get_sibling_by_gender вместо само get_siblings.
+# 10. Винаги параметрите на клас, които се явяват частен случай на някакъв общ вариант (например големината на дъската за морски шах или форматът на принтиране на дъската) се изнасят в константи, за да бъдат променяни еднократно при необходимост.
+# 11. Методите, които не са предназначени за публична употреба, се именоват с __.
+# 12. Когато на метод не е необходима инстанцията на класа (self), удачно е да бъде статичен (чрез @staticmethod).
+# 13. Вътрешната реализация на даден клас не трябва да се води от принтирането му. С други думи, беше непрактично (при нужда от промяна) да реализирам морския шах като стринг, който да променям постоянно.
+# 14. .format(args) е удобен при извеждане на съобщения към потребителя.
+# 15. Речник се подава на .format с **<име на речника>.
+# 16. Пише се <променлива> is True/False/None, вместо <променлива> = True/False/None.
+# 17. Задължително при използване на регулярни изрази се проверява дали е подаден символен низ, а не друг тип (това ми коства 1 точка).
+# 18. Коректност на данни по-лесно и четимо се проверява с [not] in <списък с желани стойности>, вместо с регулярен израз.
+# 19. Инициализиращи стойности се задават лесно с един или няколко вложени for, както е инициализирана __game_board в 4. задача.
+# 20. Функцията all (от първата хитринка), комбинирана с <условие> for <итериращо> in <поредица>, е удобна за бързи конкретни проверки.