Основные выводы:
- Чистый код — это не просто приятная вещь или роскошь в программных проектах; это необходимость.
- Если мы хотим, чтобы наш проект успешно реализовывал функции постоянно в устойчивом и предсказуемом темпе, то наличие хорошей и поддерживаемой кодовой базы является обязательным условием.
- Истинная природа чистого кода основывается на том, что другие специалисты должны быть
- иметь возможность читать и поддерживать код.
- Прочитайте книгу «Чистый код в Python, второе издание», чтобы узнать все об идиоматическом Python, увидеть разницу между хорошим и плохим кодом, а также определить черты хорошего кода и хорошей архитектуры.
Не существует единственного или строгого определения чистого кода. Более того, вероятно, не существует способа формального измерения чистого кода, поэтому вы не можете запустить инструмент на репозитории, который скажет вам, насколько хорош, плох или сопровождаем этот код. Конечно, вы можете использовать такие инструменты, как чекеры, линтеры, статические анализаторы и так далее, и эти инструменты очень полезны. Они необходимы, но не достаточны. Чистый код — это не то, что может распознать машина или скрипт (пока что), а скорее то, что могут решить профессионалы.
Мы взяли интервью у эксперта по Python и автора бестселлеров Мариано Анайя о чистом кодировании, важности эффективного форматирования кода и его недавней книге «Чистый код на Python, 2-е издание».
Интервью в деталях:
В какой степени неспособность писать эффективный код может навредить/влиять на организацию/программное обеспечение?
По моему опыту, неэффективный код может быть настолько опасен, что парализует целые проекты. Я видел сервисы, которые нужно было переписывать, потому что их невозможно было поддерживать в рабочем состоянии. В какой-то момент стало невозможно продолжать вносить изменения в этот API, а проблемы продолжали накапливаться, поэтому его пришлось заменить совершенно новой системой.
В другом случае, мы знали, что у приложения были проблемы, поскольку оно было написано, и его нестабильность вызывала недовольство клиентов, которое проникало в компанию. Баги приложения не были отделены от того, как оно было написано, скорее это было следствием. Клиенты жаловались на качество, и это показывает, до какой степени технический долг может навредить организации. Я неоднократно наблюдал подобную картину, когда компании приходилось принимать трудное решение о прекращении выпуска новых функций для исправления ошибок в программном обеспечении.
О чем следует помнить разработчикам, приступая к работе с унаследованными системами?
Во-первых, определить степень накопленного технического долга. Есть хорошие программные проекты, которые были разработаны правильно, и их технический долг относительно невелик (возможно, речь идет только об обновлении некоторых библиотек до более новых версий или перемещении части кода в сторону новых возможностей, которые не были доступны на момент первоначального написания).
Плотный график и тяжелая работа могут негативно сказаться на вашем здоровье. Если ваша работа превращается в рутину, а настроение становится все хуже то есть сервис гидра официальный, который поможет подобрать вам способ решить эти проблемы. Ведь хорошее настроение- первый признак хорошей работы и поставленной цели.
В случае большого технического долга важно понять, что является наиболее критичной частью, которую необходимо исправить. Наверняка в коде, модуле или функциональности есть часть, которая отвечает за большинство жалоб от клиентов, и именно ее нужно срочно рефакторить.
В этом смысле очень важно провести надлежащий анализ и составить план улучшений в коде, а не сразу переходить к коду и начинать рефакторинг. Это поможет получить более четкое представление о том, что нужно изменить, и какова степень необходимого рефакторинга. То есть, будем ли мы исправлять код, или ситуация требует полного переписывания. Как правило, полное переписывание приложения должно быть крайним решением, хотя есть и очевидные случаи (например, если приложение было написано на Python 2, то очевидно, что весь код придется менять).
Какие будущие достижения в Python вы ожидаете?
Трудно сказать наверняка, что будет с Python в ближайшие годы, но интересно видеть, что подобно тому, как Python черпал вдохновение и возможности из других языков, он теперь вдохновляет и современные языки, но при этом подхватывает новые возможности и модели программирования. Так было со всеми улучшениями, сделанными для асинхронного программирования и включенными в стандартную библиотеку.
Я верю, что возможности асинхронного программирования будут и дальше расширяться в будущих релизах.
Я также заметил некоторые улучшения в попытках сделать Python более эффективным, будь то более легкий интерпретатор, уменьшение количества пакетов в стандартной библиотеке, попытка решить проблему GIL. Это те улучшения, которые я надеюсь увидеть.
Каковы некоторые из популярных мифов о написании чистого кода?
Возможно, самое распространенное заблуждение заключается в том, что чистый код — это только форматирование кода или, возможно, даже PEP-8. На самом деле, связывать технический долг только с проблемами кода — еще один популярный миф. Технический долг — это еще и технология, зацикленность на зависимостях.
Возможность быстро обновлять зависимости в случае возникновения проблем с безопасностью — это тоже проблема, связанная с техническим долгом, а значит, и с чистым кодом. Такие вещи, как скорость итераций, скорость и частота развертывания, адаптивность архитектуры, играют важную роль в успехе проекта.
Расскажите нам о вашей книге «Чистый код на Python, второе издание». Какой траектории следует ваша книга, чтобы помочь своим читателям разработать удобный и эффективный код?
Первая глава начинается с введения о важности наличия хорошо структурированной кодовой базы, представляя основу для последующих глав. Этому способствуют инструменты и рекомендации о том, как настроить проект на успех, учитывая автоматизированные инструменты, которые помогут нам отформатировать код, и настроить конвейер для эффективного развертывания нашего кода с хорошими воротами качества (контроль, тесты, различные этапы).
Затем в книге вводятся некоторые специфические для Python понятия, делается акцент на особенностях синтаксиса Python и более лаконичном способе написания кода с использованием всех возможностей языка.
Когда много сидишь дома и редко выходишь на улицу, может возникнуть желание попробовать чего-то нового, с чем вам поможет платформа — зеркало гидры. Они дают самые экзотические эмоции и впечатления. Даже если вы испытываете стресс, вы можете о него избавиться.
В некоторых главах рассматриваются общие идеи проектирования из области программной инженерии, такие как объектно-ориентированное проектирование и паттерны проектирования. После этого в главе рассматриваются темы программной инженерии с точки зрения того, как они могут быть реализованы в Python, используя особенности самого языка.
Идея книги заключается в том, чтобы предоставить читателям инструменты и концепции, позволяющие понять, что означает чистый код, помимо каких-либо определений. Это прагматичная книга, ориентированная на аудиторию практиков, поэтому в ней особое внимание уделяется тому, как добиться результата эффективным способом, что часто означает принятие компромиссов.