SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
РАЗРАБОТЧИК РАЗРАБОТЧИКУ:
АЗБУКА ВЕЖЛИВОСТИ
Игорь Стариков / idle sign
АВТОР
Несу Python в массы:
Рассказываю о нём
Поддерживаю сайт —
Перевожу и озвучиваю доклады с PyCon US
Пишу код и отдаю его людям —
pythonz.net
 idlesign
ПОЧЕМУ Я РАССКАЗЫВАЮ ОБ ЭТОМ
Актуально
Интересно
Важно
ПОЧЕМУ РАССКАЗЫВАЮ ОБ ЭТОМ Я
Несколько десятков проектов с открытым кодом — Python, JavaScript, PHP, Delphi.
Вежливость — уважительность,
корректность, соблюдение
приличий.
Вежа — знаток, опытный, знающий.
ДОКУМЕНТИРОВАНИЕ
Документация — основное средство начального ознакомления с возможностями продукта,
влияющее на формирование отношения к нему.
Доступность
Актуальное состояние
Верный выбор целевой аудитории
README
Сжатое описание продукта, его основные характеристики.
Важная информация
Ссылка на основную документацию
ОСНОВНАЯ ДОКУМЕНТАЦИЯ
Примеры, нюансы
Инструменты: ,
Не увлекайтесь автодокументированием по данным
кода
Sphinx Read The Docs
ЖУРНАЛ ИЗМЕНЕНИЙ
Позволяет пользователю получить представление о необходимости обновления.
Определите формат и строго следуйте ему —
Особое внимание: устаревание, удаление
функциональности
Keep a Changelog
ДОКУМЕНТИРОВАНИЕ ВНУТРИ КОДА
Информация о возможностях API, примеры использования.
Не заменяет основную документацию
, как отправная точка
Должны быть покрыты все публичные точки
программых интерфейсов
PEP 257
КОММЕНТАРИИ ВНУТРИ КОДА
Только, если требуются для улучшения понимания происходящего.
Не нравится качество кода — исправь. Не можешь
исправить — промолчи
Не ставьте TODO и FIXME к чужому коду
ПРЕДУПРЕЖДЕНИЯ ОБ УСТАРЕВАНИИ
Модуль warnings, функция warn. Классы:
DeprecationWarning и PendingDeprecationWarning
Вывести номер версии, в которой устареет
Вывести рекомендацию об альтернативном
механизме
КОД
Соглашение о стиле.
Принцип наименьшей неожиданности
Принцип разумных умолчаний
Путь Питона. Он же Дзэн
PEP 8
ПРИНЦИП НАИМЕНЬШЕЙ
НЕОЖИДАННОСТИ
Структура приложения: логическое распределение
по модулям, пакетам, пространствам имён
Именование: соответствие наименования
содержимому
Последовательно аргументов в однотипных
функциях
Не усложнять
ПРИНЦИП РАЗУМНЫХ УМОЛЧАНИЙ
Требует анализа/прогноза вариантов
использования кода
Создать инструменты для частых сценариев
Гибкие реализации и реализации общего вида
предпочтительны
Не усложнять
ПУТЬ ПИТОНА. ОН ЖЕ ДЗЭН
1. Красивое лучше безобразного.
2. Явное лучше подразумеваемого.
3. Простое лучше сложного.
4. Сложное лучше усложнённого.
5. Плоское лучше вложенного.
6. Разреженное лучше плотного.
7. Важна читабельность.
8. Исключения недостаточно исключительны, чтобы нарушать правила.
Хотя, практичность превыше безупречности.
9. Ошибки не должны оставаться незамеченными.
Если не были заглушены явно.
10. Пред лицом многозначности презрите желание догадываться.
11. Должен быть один — и лучше единственный — очевидный способ достичь цели.
Впрочем, если вы не голландец, поначалу этот способ может казаться не столь
очевидным.
12. Лучше сейчас, чем никогда.
Впрочем, часто никогда лучше, чем прямо сейчас.
13. Если реализацию трудно описать, значит идея была никудышной.
14. Если реализацию легко описать — возможно, идея была хорошей.
15. Пространства имён были блестящей идеей — генерируем ещё!
АВТОМАТИЗИРОВАННЫЕ ТЕСТЫ
Не являются гарантией правильного функционирования, но незаменимы при
реорганизации кода.
Позволяют относительно безболезненно развивать
код
Критичность необходимости будет расти с
размерами проекта
Добрую службу сослужит непрерывная интеграция,
например Travis CI
КАРКАС ПРОЕКТА
Инструменты для быстрого развёртывания структуры проекта.
2011
2013 *
2013 **
2014
…
Scaffold (scaffold-py)
Cookiecutter
makeapp
PyScaffold
ОРГАНИЗАЦИОННЫЕ ВОПРОСЫ
Версии
Доступность дистрибутива
Поддержка пользователей
ВЕРСИИ
Номер версии — это и договорённость и визитная
карточка. Следует придерживаться правил
« ».
Частота выпуска: «когда нельзя больше ждать»,
«когда накопилось», «когда будет готово»
Осмысленной нумерации
ДОСТУПНОСТЬ ПРОЕКТА
Доступность дистрибутивов.
Доступность исходного кода.
PyPI
GitHub
ПОДДЕРЖКА ПОЛЬЗОВАТЕЛЕЙ
Нужна система отслеживания инцидентов/ошибок
По возможности старайтесь отвечать на вопросы о
проекте
Хорошо, если есть место для обсуждения:
конференция, форум и т.п.
Важна доброжелательность
При отсутствии возможности решить задачу,
обозначьте альтернативные варианты
СПАСИБО ЗА ВНИМАНИЕ!
Оригинальная статья «Азбука вежливости разработчика» — http://bit.ly/pypolite
ВОПРОСЫ?
      idlesign  idlesign  idlesign
Эти слайды можно найти тут — http://bit.ly/ist_001

Contenu connexe

Similaire à Азбука вежливости

Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"Agile Base Camp
 
Как войти в айти?
Как войти в айти?Как войти в айти?
Как войти в айти?Netpeak
 
презентация для вебинара в январе 2013
презентация для вебинара в январе 2013презентация для вебинара в январе 2013
презентация для вебинара в январе 2013Андрей Дорофеев
 
Dmytro Mindra: Product mindset for engineers
Dmytro Mindra: Product mindset for engineersDmytro Mindra: Product mindset for engineers
Dmytro Mindra: Product mindset for engineersLviv Startup Club
 
!Academy1 ru creativity_and_startups_ii_v001
!Academy1 ru creativity_and_startups_ii_v001!Academy1 ru creativity_and_startups_ii_v001
!Academy1 ru creativity_and_startups_ii_v001Nordic Agency AB
 
5 самых критичных ошибок презентаций. Ошибки, которые допускают все
5 самых критичных ошибок презентаций. Ошибки, которые допускают все5 самых критичных ошибок презентаций. Ошибки, которые допускают все
5 самых критичных ошибок презентаций. Ошибки, которые допускают всеFastvisuals
 
Freelance - как быстро начать
Freelance - как быстро начатьFreelance - как быстро начать
Freelance - как быстро начатьJaroslav Khorishenko
 
How to Put Automation Engineers Down
How to Put Automation Engineers DownHow to Put Automation Engineers Down
How to Put Automation Engineers DownÞorgeir Ingvarsson
 
L&D Camp, дубль 1
L&D Camp, дубль 1L&D Camp, дубль 1
L&D Camp, дубль 1kevochka
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромKirill Kovalchuk
 
В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"EgorNemov
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java DeveloperOlexandra Dmytrenko
 
Concepting, Storm, Presentation
Concepting, Storm, PresentationConcepting, Storm, Presentation
Concepting, Storm, PresentationIgor Namakonov
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
Как сделать вашу презентацию офигенной?
Как сделать вашу презентацию офигенной?Как сделать вашу презентацию офигенной?
Как сделать вашу презентацию офигенной?Nikolay Yaremko
 
Что такое презентация
Что такое презентацияЧто такое презентация
Что такое презентацияMaxim Kudryavtsev
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for DummiesCOTOHA
 
Human computer interfaces v8
Human computer interfaces v8Human computer interfaces v8
Human computer interfaces v8Yuri Ammosov
 
ошибки аналитика
ошибки аналитикаошибки аналитика
ошибки аналитикаAndrey Verbitsky
 

Similaire à Азбука вежливости (20)

Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
 
Как войти в айти?
Как войти в айти?Как войти в айти?
Как войти в айти?
 
презентация для вебинара в январе 2013
презентация для вебинара в январе 2013презентация для вебинара в январе 2013
презентация для вебинара в январе 2013
 
Dmytro Mindra: Product mindset for engineers
Dmytro Mindra: Product mindset for engineersDmytro Mindra: Product mindset for engineers
Dmytro Mindra: Product mindset for engineers
 
!Academy1 ru creativity_and_startups_ii_v001
!Academy1 ru creativity_and_startups_ii_v001!Academy1 ru creativity_and_startups_ii_v001
!Academy1 ru creativity_and_startups_ii_v001
 
5 самых критичных ошибок презентаций. Ошибки, которые допускают все
5 самых критичных ошибок презентаций. Ошибки, которые допускают все5 самых критичных ошибок презентаций. Ошибки, которые допускают все
5 самых критичных ошибок презентаций. Ошибки, которые допускают все
 
Freelance - как быстро начать
Freelance - как быстро начатьFreelance - как быстро начать
Freelance - как быстро начать
 
Какие виды контента взорвут ваш трафик? Вебинар WebPromoExperts #309
Какие виды контента взорвут ваш трафик? Вебинар WebPromoExperts #309Какие виды контента взорвут ваш трафик? Вебинар WebPromoExperts #309
Какие виды контента взорвут ваш трафик? Вебинар WebPromoExperts #309
 
How to Put Automation Engineers Down
How to Put Automation Engineers DownHow to Put Automation Engineers Down
How to Put Automation Engineers Down
 
L&D Camp, дубль 1
L&D Camp, дубль 1L&D Camp, дубль 1
L&D Camp, дубль 1
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
 
В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java Developer
 
Concepting, Storm, Presentation
Concepting, Storm, PresentationConcepting, Storm, Presentation
Concepting, Storm, Presentation
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
Как сделать вашу презентацию офигенной?
Как сделать вашу презентацию офигенной?Как сделать вашу презентацию офигенной?
Как сделать вашу презентацию офигенной?
 
Что такое презентация
Что такое презентацияЧто такое презентация
Что такое презентация
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for Dummies
 
Human computer interfaces v8
Human computer interfaces v8Human computer interfaces v8
Human computer interfaces v8
 
ошибки аналитика
ошибки аналитикаошибки аналитика
ошибки аналитика
 

Plus de PyNSK

Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1PyNSK
 
Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2PyNSK
 
Asyncio для процессинга распределенной базы данных
Asyncio для процессинга  распределенной базы данныхAsyncio для процессинга  распределенной базы данных
Asyncio для процессинга распределенной базы данныхPyNSK
 
Python для GameDev
Python для GameDevPython для GameDev
Python для GameDevPyNSK
 
Python инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестированияPython инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестированияPyNSK
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPyNSK
 
Настрой контент под пользователя!
Настрой контент под пользователя!Настрой контент под пользователя!
Настрой контент под пользователя!PyNSK
 
Питон в малине
Питон в малинеПитон в малине
Питон в малинеPyNSK
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonPyNSK
 
Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?PyNSK
 
Во внутренности Kivy
Во внутренности KivyВо внутренности Kivy
Во внутренности KivyPyNSK
 
Зоопарк python веб-фреймворков
Зоопарк python веб-фреймворковЗоопарк python веб-фреймворков
Зоопарк python веб-фреймворковPyNSK
 
Как Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикойКак Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикойPyNSK
 
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовПрименение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовPyNSK
 
Ctypes в игровых приложениях на python
Ctypes в игровых приложениях на pythonCtypes в игровых приложениях на python
Ctypes в игровых приложениях на pythonPyNSK
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности PythonPyNSK
 
Python инструменты решения типичных задач
Python  инструменты решения типичных задачPython  инструменты решения типичных задач
Python инструменты решения типичных задачPyNSK
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотекPyNSK
 
JSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенJSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенPyNSK
 
TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.PyNSK
 

Plus de PyNSK (20)

Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1
 
Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2
 
Asyncio для процессинга распределенной базы данных
Asyncio для процессинга  распределенной базы данныхAsyncio для процессинга  распределенной базы данных
Asyncio для процессинга распределенной базы данных
 
Python для GameDev
Python для GameDevPython для GameDev
Python для GameDev
 
Python инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестированияPython инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестирования
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системы
 
Настрой контент под пользователя!
Настрой контент под пользователя!Настрой контент под пользователя!
Настрой контент под пользователя!
 
Питон в малине
Питон в малинеПитон в малине
Питон в малине
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
 
Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?
 
Во внутренности Kivy
Во внутренности KivyВо внутренности Kivy
Во внутренности Kivy
 
Зоопарк python веб-фреймворков
Зоопарк python веб-фреймворковЗоопарк python веб-фреймворков
Зоопарк python веб-фреймворков
 
Как Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикойКак Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикой
 
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовПрименение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
 
Ctypes в игровых приложениях на python
Ctypes в игровых приложениях на pythonCtypes в игровых приложениях на python
Ctypes в игровых приложениях на python
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
 
Python инструменты решения типичных задач
Python  инструменты решения типичных задачPython  инструменты решения типичных задач
Python инструменты решения типичных задач
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотек
 
JSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенJSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобен
 
TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.
 

Азбука вежливости