Тъй като на днешната лекция стана за малко дума за една-две лоши практики при писане на код на Python реших да ги постна тук, за да не ги забравите.
1) Пример: https://gist.github.com/861242
Обяснение: Лоша практика е, защото кодът става по-трудно четим. По-трудно се забелязва кое е условието на if-а (или for, while,...) и къде е операторът, който трябва да се изпълни (в случая print("Hello, World!")). Ако операторите са много няма проблем - те задължително се пишат на отделен ред (с табулация). Но дори операторът да е един, пак е добре да се пише на отделен ред: хем по-четливо, хем по-консистентно с останалата част на кода и най-вече с другите if-ове, for-ове и т.н.
2) Пример: https://gist.github.com/861311
Обясненние: Явно IDLE няма проблеми със смесването на една табулация и 4-ри интервала (или с колкото интервала е мапната табулацията). Пробвах и стана.
Но все пак не е хубаво да ги смесвате, защото някои среди правят разлика между двете и там е малко досадно. Така че бъдете консистентни и още по-добре - използвайте ТАБУЛАЦИЯ.
3) Пример: https://gist.github.com/861321
Обяснение: Според мен е доста лоша и досадна практика. Казвам го от личен опит!
Когато програмирам на c++ ползвам Dev-C++. Но Dev-а има един много странен default навик (поне го имаше преди да намеря проклетата настройка откъдето се фиксва) - сам решава къде да е табулацията. И как го прави - от началото на думите от предишния ред взима позицията на първия символ от втората дума, стига първата дума + интервалите след нея да са повече от 3 (иначе взима началото на третата дума).
И така, какво се получава. Ако на предния ред имаме for (int i = 0;... и т.н.) табулацията е 4-ри интервала. Засега всичко е наред! Но сега внимавайте! При while (i < 10) табът е 6 интервала. А при if (very_very_very_very_long_variable_name == true) според вас колко интервала таба ще е? Хм? Кой каза половин екран? Непозна! Само една трета от екрана е.
(Ако се питате от какъв зор трябва променливите да имат дълги имена ще ви отговоря - не трябва да имат дълги имена, а ОПИСАТЕЛНИ имена. Счита се за добра практика (особено ако лично се настрадате) променливите да се кръщават с имена, които описват какво съдържа променливата. Да взмем за пример регистрацията в този сайт. Ако променливата 'a' пази трите имена, променливата 'b' факултетния номер, а 'c' паролата, 'a', 'b', 'c' нищо няма да ви говорят щом забравите за какво са (въпреки че на компютъра му е все тая как си ги кръщавате и дали ги помните или не.). Но ако ги кръстите примерно 'name', 'fk' (или още по-добре 'facultyNumber') и 'password' вече веднага ще си ги спомните за какво са щом ги видите. И за другите, които ще имат щастието/нещастието да ви четат кода ще им е по-ясно.)
Както сами виждате това беше голям проблем. Особено когато тръгнеш да триеш интервалите един по един.
P.S. Ако чуете или прочетете на лекции, във форума или на някое друго място за още лоши практики при писане на код - постнете ги тук с поне един пример и обяснение. Ще е хубаво да пишем хубав и четлив код!