Пытаетесь структурировать код в крупных проектах? Отличные ресурсы для новичка, которые не так легко найти

Итак, заканчивая первый курс и освоив дисциплины «Программирования» и «Курс молодого бойца: Python«, вы медленно, но верно должны превратиться в продвинутого новичка — некоторый путь к основам Python пройден и вы уже можете решать реальные проблемы.

Возможно, очень скоро вы приступить к своему первому большому проекту, однако не знаете, с чего начать, как его структурировать и не хотите допускать грубых ошибок.

Или вы уже на полпути к крупному проекту (возможно, не к первому), но не знаете, как заставить массу модулей работать соместно; а то, что начиналось как скрипт, в итоге превратилось в не очень красивые модули и пакеты и все это очень быстро превращается в хаос.

Может быть, у вас есть ощущение, что большинство руководств и сообщений в блогах напрямую относятся к одному решению не сложной выдуманной проблемы, без углубленного изучения альтернатив. Вы пробовали читать об архитектуре и шаблонах проектирования, но они кажутся слишком абстрактными, и нет общего представления, как они применимы к вашему коду.

Возможно, вы согласны с тем, что нужно писать много кода и тренировать зрение на знакомство с множеством проектов на GitHub — «просто выберите тот, который вам нравится, и посмотрите, как он сделан». Но эти проекты слишком велики, и с чего начать? Кроме того, из самого кода без ясных комментариев, на которые программисты привычно не тратят время, не очевидно в чем заключалась философия дизайна и какие варианты реализации были проанализированы, прежде чем остановиться на предлагаемом решении.

Если что-то из перечисленного вам знакомо, то вот несколько ресурсов, которые будут вам полезны.

Архитектура приложений с открытым исходным кодом

Вспомните, как чтение кода не давало представление о философии и дизайнерских решениях?

The Architecture of Open Source Applications (Архитектура приложений с открытым исходным кодом) — это целая книга об этом (на самом деле две книги, два тома) — и она бесплатна!

Вот цитата с сайта пректа:

Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another’s mistakes rather than building on one another’s successes.

Our goal is to change that. In these two books, the authors of four dozen open source applications explain how their software is structured, and why. What are each program’s major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to these books provide unique insights into how they think.

Будущие архитекторы, когда учатся, смотрят на тысячи зданий и изучают мнения мастеров по поводу этих зданий. В отличии от них, большинство разработчиков программного обеспечения хорошо знакомы только с горсткой больших программ — обычно это программы, которые они сами написали, — и никогда не изучают великие истории программирования. Как результат, программисты повторяют одни и те же ошибки, сделанные другими, а не развивают успехи друг друга.

Наша цель — изменить такую ситуацию. В этих двух книгах авторы четырех десятков приложений с открытым исходным кодом объясняют, как структурировано их программное обеспечение и почему. Каковы основные компоненты каждой программы? Как они взаимодействуют? А чему их строители научились в процессе разработки? Отвечая на эти вопросы, авторы этих книг дают уникальное понимание того, как они думают.

Почти четверть глав этой электронной книги посвящена проектам Python; вы встретите знакомые имена, такие как SQLAlchemy, PyPy, Twisted, matplotlib и Mercurial.

Обсуждения всегда на высоком уровне, так как все они зрелые и относительно большие проекты (а в одну главу книги можно вместить не так уж много всего), хотя некоторые из глав более информативны и глубже других.

Обязательно взгляните на главы, не относящиеся к Python — в них много мудрости. Кроме того, по крайней мере, часть успеха одного собеседования моего бывшего студента при устройстве на работу была связана с главой о nginx, а совсем не про Python.

500 или меньше строк

500 Lines or Less — еще одна книга из серии AOSA.

Она является подготовительной для знакомства с более сложными слишком высокоуровневым книгам и специально посвящена небольшим проектам (опять же, с упором на дизайнерские решения). Из введения:

Первые три тома этой серии посвящены решению больших проблем для больших программ. Для инженера, который только начинает свою карьеру, может быть проблемой понять и развить программы с несколькими тысячами строчек кода. Поэтому, хотя о больших проблемах может быть читать интересно, но при изучении они могут быть очень сложны, а потому непонятны.

Есть и совсем хорошие новости: более половины глав написаны на Python.

Если вы когда-нибудь задумывались, как работают механизмы шаблонов, прочтите главу A Template Engine (Механизм шаблонов). Это легкое введение в проблему, где рассматриваются относительно простые решения (но не настолько простые, чтобы их больше не использовалось. extension.py использует для создания своих отчетов в формате HTML) и это на самом деле механизм шаблонов.

Jinja

Если глава о шаблонизаторах «500 строк или меньше» вас заинтересовала, то возможно, вы захотите взглянуть на Jinja.

Jinja — один из наиболее часто используемых шаблонизаторов для Python, и если вы использовали Flask, то, вероятно, уже знаете, что это. Он совершенствовался более 14 лет и, как и все проекты Pallets, имеет отличный API.

Я рекомендую вам погрузиться в исходный код, начиная с класса Environment, предварительно прочитав разделы Basics и High Level API документации API.

Главный автор Jinja, Армин Ронахер, провел два выступления, которые направят вас на путь истинный:

  • Code Generation in Python: Dismantling Jinja (recording) (Генерация кода в Python: разборка Jinja) исследует дизайн инфраструктуры компилятора Jinja, почему после множества различных итераций она работает так, как работает, и как она оказалась там, где она есть.
  • Let’s Talk About Templates (recording) (Поговорим о шаблонах) сравнивает шаблоны Jinja и Django, глядя на то, как их разные истории и ограничения привели к совершенно разным внутренним замыслам.

Вы можете найти все выступления Армина здесь. Letters from the Battlefield и Good API Design — особенно хорошие уроки дизайна более высокого уровня с примерами из мира Flask и Jinja. Но для многих новость не хорошая — всё это на английском.

На этом пока все. Если вы нашли это полезным и хотели бы увидеть больше, напишите мне в комментариях


Требуется регистрация для доступа к контенту. Регистрация, если Вы уже зарегистрированы — подключитесь
Print Friendly, PDF & Email

CC BY-NC 4.0 Пытаетесь структурировать код в крупных проектах? Отличные ресурсы для новичка, которые не так легко найти, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

Добавить комментарий