{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Основы программирования в Python\n", "\n", "*Материал подготовил: Виталий Евтушенко, НИУ ВШЭ*\n", "\n", "*Редактирование: Алла Тамбовцева, НИУ ВШЭ*" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Стандарт оформления кода (Coding style)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Читать про [coding style](https://en.wikipedia.org/wiki/Programming_style) в целом." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Commercial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Чтобы упростить процессы и жизнь, человечество начало придумывать некие стандарты: стандарты красоты, золотые стандарты, стандарты уровня жизни, стандарты ведения войны, [стандарты обработки чисел с плавающей точкой](https://en.wikipedia.org/wiki/IEEE_754). Можно предположить, что стандартизация не обошла стороной и прикладное программирование. И это предположение будет верным. \n", "\n", "Один из стандартов — **стандарт оформления кода**. Также есть стандарты документации, стандарты используемых библиотек. Почти на всё есть свой стандарт, а иногда ещё и внутренняя/локальная/корпоративная договоренность (конвенция). \n", "\n", "### Зачем нужен Coding style?\n", "\n", "В целом, это очень утилитарная идея, которая позволяет унифицировать оформление кода, сделав его более читаемым. Какие основные принципы включают стандарты оформления кода (кода вообще, не только в Python).\n", "\n", "**Ограничение на количество символов в строке**: максимальная возможная длина одного монитора, чтобы не использовать полосу прокрутки (*scroll bar*).\n", "\n", "**Осмысленные имена переменных**: чтобы другой человек _(а также разработчик, который уже через несколько дней ‒ другой человек)_ понимал, что содержится в переменной. Например, переменная `today_temp` вместо `A`; `number_of_revolution_per_year_in_developing_countries` вместо переменной с названием `B`.\n", "\n", "**Пробелы**: ставить пробелы для лучшей читаемости кода.\n", "\n", "**Отступы vs Пробелы**: для отсутствия проблем с компиляцией программы и более быстрого поиска ошибок нужно отличать отступы (табуляция) от пробелов.\n", "\n", "С помощью *coding style* человек, впервые увидевший ваш код, может потратить меньше времени на понимание кода, если он выполнен согласно стандарту («согласно стандарту» - примерно равно согласно «здравому смыслу»).\n", "\n", "Возможно, *coding style documents* не всегда написаны кровью (по аналогии с техникой безопасности и правилами дорожного движения), но написаны ценой человеко-часов, которые стоит экономить.\n", "\n", "### Что почитать?\n", "\n", "*Совет: прочитайте PEP8, а потом проверьте свое чувство стиля в тесте по второй ссылке. Третья ссылка просто клад — она не только позволяет проверить скопированный в специальное поле код на соответствие стандартам, но и выводит комментарии по каждому недочету!*\n", "\n", "- [PEP 8 ‒ Style Guide for Python Code](https://www.python.org/dev/peps/pep-0008/)\n", "- [Тест: а у вас стильный Python? (tproger)](https://tproger.ru/quiz/python-style-quiz/)\n", "- [Check PEP8 online](http://pep8online.com/)\n", "- [Why does Google not follow PEP8 for Python code?](https://www.quora.com/Why-does-Google-not-follow-PEP8-for-Python-code) и [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html) (**пример корпоративной конвенции о коде**)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }