Заключительная лекция. Об утках и офрмлении кода.
- вдогонку: pickle vs. переносы строк
- утиная типизация
примеры: StringIO, умножение вектора на число = умножение матрицы на вектор
- про стили:
что это – это текст, в котором написано "делай так, не делай эдак"
- зачем они нужны
- пример: ioccc vs. почти любой фрагмент ядра Linux
- чтобы другие могли читать
- другие = другие; ты сам год спустя; другой компьютер или другой редактор
- читать:
- более регулярный код читается быстрее
читать – предусловие к возможности дописывать
- хорошие приёмы (best practices):
- частые ошибки
- угловатости языка (или библиотеки)
- простые оптимизации
- просто хорошие приёмы
- когда они не нужны
- диалог с интерпретатором
- "одноразовые" программы (которые пишутся за один вечер)
- обычно стиль состоит из частей:
общепрограммистское -> специфика языка -> специфика проекта -> совсем локальное
- более локальное всегда имеет приоритет над более общим
- стилей бывает много разных
Linux Kernel Coding Style – много специфики для C, но много общепрограммистских хороших идей
- ...
- почему в некоторых стилях возникают некоторые идеи (общие):
- язык переменных; язык комментариев: кодировка; собственно, язык
- маленькие функции
- стили имён (модули, классы, функции, константы, переменные, приватные, глобальные); словарь терминов
- ширина экрана; переносы строк
- отступы
- tab vs space; pretxncommit = tabspace -r
- сколько
- переносы строк (win, unix); пробелы в концах строк
- пробелы: между строк, внутри строки
- хорошие и плохие типы комментариев: WHAT (+), WHY (+-), HOW (-)
- порядок частей кода; место, порядок и типы внешних связей (в питоне это import)
- примеры питоноспецифичных вещей (это только выдержки; полное читайте PEP-8, PEP-257):
- про следующий семестр