Искусство чистого кода - Кристиан Майер - E-Book

Искусство чистого кода E-Book

Кристиан Майер

0,0

Beschreibung

Большинство разработчиков ПО тратят тысячи часов на создание излишне сложного кода. Девять основных принципов книги «Искусство чистого кода» научат вас писать понятный и удобный в сопровождении код без ущерба для функциональности. Главный принцип — это простота: сокращайте, упрощайте и перенаправляйте освободившуюся энергию на самые важные задачи, чтобы сэкономить бесчисленное количество часов и облегчить зачастую очень утомительную задачу поддержки кода. Автор бестселлеров Кристиан Майер помог тысячам людей усовершенствовать навыки программирования и в своей новой книге делится опытом с читателями.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 221

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Кристиан Майер
Искусство чистого кода

Переводчик Н. Григорьева

Кристиан Майер

Искусство чистого кода. — СПб.: Питер, 2023.

ISBN 978-5-4461-2391-9

© ООО Издательство "Питер", 2023

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

Моим детям Амалии и Габриэлю

Об авторе

Кристиан Майер (Christian Mayer) — основатель популярного сайта Finxter.com, посвященного языку Python. Благодаря этой образовательной платформе более пяти миллионов человек в год обучаются программированию. Кристиан имеет степень PhD в области computer science, он опубликовал ряд книг, включая «Python One-Liners» (No Starch Press, 2020)1, «Leaving the Rat Race with Python» («Выйти из бешеной гонки с помощью Python») (2021) и серию «Coffee Break Python» («Перерыв на кофе с Python»).

1 Майер К. «Однострочники Python: лаконичный и содержательный код». Санкт-Петербург, издательство «Питер».

О научном редакторе

Ноа Спан (Noah Spahn) имеет богатый опыт в области разработки ПО. Он получил степень магистра в области программной инженерии в Университете штата Калифорния в Фуллертоне. Сегодня Ноа работает в группе компьютерной безопасности Калифорнийского университета в Санта-Барбаре (University of California, Santa Barbara; UCSB), где ранее преподавал Python в группе междисциплинарного сотрудничества. Также он читал лекции по концепциям языков программирования для студентов старших курсов Вестмонтского колледжа. Ноа всегда рад помочь тем, кто заинтересован в обучении.

От издательства

На момент сдачи книги в печать все приведенные в ней URL-ссылки работают, однако доступ к некоторым сайтам ограничен на территории РФ.

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

Предисловие

Я помню, с каким волнением изучал первые строчки кода на Python; мне казалось, что я попал в совершенно новую сказочную вселенную. Со временем я научился работать с переменными, списками и словарями Python. Затем разобрался в том, как писать функции, и с энтузиазмом взялся за разработку более сложного кода. Однако вскоре я понял, что умение писать код не делает меня искусным программистом, — будто я просто выучил несколько фокусов, но еще был очень далек от того, чтобы стать настоящим волшебником в программировании.

Хотя я и выполнял порученную работу, мой код был ужасным: повторяющимся и трудночитаемым. Когда Крис рассказал мне об этой книге, я подумал: «Жаль, что у меня ее не было, когда я только начинал писать код». Существует много литературы, обучающей техническим аспектам программирования, но такие книги, как «Искусство чистого кода», встречаются редко. В ней рассказывается, как усовершенствовать свои навыки с помощью девяти принципов написания кода. А высокое мастерство повышает чистоту кода, сосредоточенность, эффективность использования времени и качество результатов.

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

Состояние потока и философия Unix, о которых говорится в главах 6 и 7, — это еще два принципа, о которых я хотел бы знать намного раньше. Как правило, многозадачность считается полезным навыком в нашей культуре. Я часто гордился своей способностью писать код, одновременно отвечая на звонки и письма. Мне потребовалось время, чтобы понять, насколько полезно умение полностью исключить отвлекающие факторы и сфокусироваться только на коде. Несколько месяцев спустя я начал выделять время в своем расписании исключительно на разработку. В итоге я не только написал более качественный код с меньшим количеством ошибок, но и получил гораздо больше удовольствия от процесса.

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

Умение хорошо писать код требует любознательности и нуждается в практике. Однако есть разница между хорошим кодером и хорошим программистом — эта книга поможет вам стать хорошим программистом: более сфокусированным, продуктивным и эффективным.

Адам Шредер (Adam Schroeder), комьюнити-менеджер в Plotly,соавтор книги «Python Dash» (No Starch Press, 2022)

Благодарности

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

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

Самым большим источником мотивации для меня стали активные члены сообщества Finxter. Каждый день я получаю ободряющие сообщения от студентов Finxter, и это вдохновляет меня на создание контента. Я надеюсь, что по мере чтения этой книги вы присоединитесь к нашему сообществу Finxter2 и я смогу от всей души поприветствовать вас. Мне очень приятно будет видеть вас здесь!

Я глубоко признателен команде издательства No Starch Press за то, что процесс написания книги стал для меня таким интересным опытом. Хочу поблагодарить моего редактора Лиз Чедвик (Liz Chadwick); именно благодаря ее выдающемуся руководству книга достигла того уровня ясности, которого я не добился бы самостоятельно. Катрина Тейлор (Katrina Taylor) вела книгу от черновика до публикации с редким талантом менеджера и глубоким пониманием текста. Спасибо, Катрина, что сделала книгу реальностью! Мой научный редактор, Ноа Спан, применил свой недюжинный профессионализм, чтобы «отладить» мою писанину. Отдельное спасибо основателю No Starch Press Биллу Поллоку (Bill Pollock) за то, что он позволил мне внести свой небольшой вклад в его миссию по обучению и развлечению разработчиков кода, выпустив еще одну книгу наряду с «Python One-Liners» и «Python Dash». Билл — вдохновляющий и востребованный лидер в области программирования, но он все равно находит время на такие мелочи, как ответы на мои сообщения и вопросы во время праздников, на выходных и даже ночью!

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

А теперь не приступить ли нам к делу?

2 Вы можете присоединиться к нашей бесплатной Email-академии Python (Python email academy) по ссылке https://blog.finxter.com/subscribe/. У нас есть шпаргалки!

Введение

Когда-то давным-давно родители Билла Гейтса пригласили легендарного инвестора Уоррена Баффета в свой дом погостить. В интервью CNBC Уоррен Баффет вспоминает, как, пользуясь случаем, отец Билла попросил сына и самого Уоррена изложить на бумаге секреты своего успеха. Сейчас я расскажу вам, что же они написали.

К тому времени гениальный программист Билл Гейтс всего пару раз встречался с известным инвестором Баффетом, но они быстро стали друзьями, поскольку оба возглавляли успешные корпорации с миллиардными оборотами. Молодой Билл с его быстрорастущей Microsoft, крупнейшей компанией-разработчиком программного обес­печения, в те годы был на пороге завершения своей главной миссии: компьютер на каждый стол. А Уоррен Баффет уже прославился как один из самых успешных в мире гениев бизнеса. Известно, что Уоррен превратил свою мажоритарную компанию Berkshire Hathaway из разорившегося производителя текстиля в международного тяжеловеса в таких разноплановых сферах, как страхование, транспорт и энергетика.

Итак, что же эти две легенды бизнеса считали секретом своего успеха? Как гласит история, независимо друг от друга Билл и Уоррен написали одно и то же слово: «фокус».

ПРИМЕЧАНИЕ

Вы можете посмотреть, как Уоррен Баффет рассказывает об этом в интервью телеканалу CNBC, в YouTube-видео под названием «One word that accounted for Bill Gates’ and my success: Focus» — Warren Buffett»3.

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

Задача книги — ответить на эти вопросы, чтобы помочь вам вести более сфокусированную жизнь программиста и стать эффективнее в повседневной работе. Я покажу вам, как повысить свою продуктивность за счет написания чистого, лаконичного и сфокусированного кода, более легкого для чтения, создания и совместной работы с другими программистами. Как я продемонстрирую в последующих главах, принцип фокусировки действует на всех этапах разработки ПО. Вы узнаете, как писать чистый код, создавать функции, направленные на качественное выполнение только одной задачи, разрабатывать быстрые и адаптивные приложения, проектировать пользовательские интерфейсы, ориентированные на эстетику и юзабилити (то есть удобство использования), а также как планировать развитие приложения, используя минимально жизнеспособный продукт. Я даже покажу вам, что достижение состояния чистой сосредоточенности значительно повысит вашу концентрацию и принесет вам больше воодушевления и радости от выполнения поставленных задач. Как вы поймете далее, идея книги в том, чтобы сфокусироваться на цели всеми возможными способами. В следующих главах я покажу вам, как именно это сделать.

Любому серьезному программисту необходимо постоянно совершенствоваться в концентрации внимания (фокусе) и повышении продуктивности. Как правило, чем важнее работа, тем выше вознаграждение. Однако простым увеличением количества этот вопрос не решается. Парадокс в следующем: вы думаете, что, если писать больше кода, создавать больше тестов, читать больше книг, больше учиться, больше думать, больше общаться и встречаться с бо́льшим числом людей, вы добьетесь большего. Но вы не сможете достичь большего, не делая при этом чего-либо в меньшем объеме. Время ограничено — у вас всего 24 часа в сутках и 7 дней в неделе, как и у меня, и у всех остальных. Существует неизбежное математическое условие: если в ограниченном пространстве что-то одно увеличивается, то что-то другое должно уменьшаться, освобождая место. Читая больше книг, вы встречаете меньше людей. Общаясь с бо́льшим количеством людей, вы пишете меньше кода. Если вы разрабатываете больше кода, то у вас меньше времени остается на тех, кого вы любите. Невозможно избежать фундаментального компромисса: при ограниченных ресурсах нельзя добиться большего, ничем не поступившись.

Вместо того чтобы просто делать больше, я предлагаю другое решение: уменьшить сложность. Это позволит вам работать меньше, получая при этом более весомые результаты. Продуманный минимализм — «Святой Грааль» личной продуктивности, и, как вы увидите далее, он работает. Вы можете создавать бо́льшую ценность, используя меньше ресурсов, правильно программируя и используя всегда актуальные принципы, описанные в данной книге.

Создавая больше ценности, вы можете рассчитывать на рост вознаграждения. Билл Гейтс однажды сказал, что «отличный токарь получает в несколько раз больше, чем средний, но великий программист сто́ит в 10 000 раз больше, чем обычный».

Одна из причин этого заключается в том, что крутой специалист обес­печивает высокую доходность компании, поскольку оптимальный подход к программированию может заменить тысячи рабочих мест и миллионы часов высокооплачиваемой работы. Например, код для управления беспилотными автомобилями эквивалентен труду миллионов водителей, будучи при этом дешевле, надежнее и (по мнению некоторых) гораздо безопаснее.

Для кого эта книга?

Вы — действующий программист, мечтающий создать более значимый продукт с быстрым кодом и меньшей головной болью?

Вы когда-нибудь зацикливались на поиске багов?

Сложность кода частенько приводит вас в замешательство?

Трудно ли вам решить, что изучать дальше, выбирая из сотен языков программирования: Python, Java, C++, HTML, CSS, JavaScript — и тысяч фреймворков и технологий: приложения Android, фреймворк Bootstrap, библиотеки TensorFlow, NumPy?

Если ваш ответ на любой из этих вопросов «ДА!» (или просто «да»), то вы держите в руках нужную книгу!

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

Чему вы научитесь?

Эта книга научит вас применять на практике девять несложных принципов, что на порядок повысит ваш потенциал как программиста. Они упростят вашу жизнь, снизят сложность и сократят усилия и время, затрачиваемые на работу. Я не претендую на новизну этих принципов. Так или иначе они приобрели известность и устоялись, а их эффективность доказана самыми успешными разработчиками кода, инженерами, философами и изобретателями. Именно это и делает их принципами! Однако здесь я буду рассматривать их применительно к программистам, приводя практические примеры и, по возможности, фрагменты кода.

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

В главе 2 раскрывается глубокое влияние принципа 80/20 на жизнь программиста. Большинство следствий (80 %) вытекает из малой доли причин (20 %) — в сфере программирования это утверждение проявляется во всем. Вы узнаете, что принцип 80/20 является фрактальным: 20 % от 20 % разработчиков кода получают 80 % от 80 % оплаты. Другими словами, 4 % программистов в мире зарабатывают 64 % всех денег. Поиск путей повышения эффективности и оптимизации работы идет непрерывно!

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

В главе 4 обсуждаются преимущества написания чистого и простого кода. Обычно люди интуитивно предполагают, что код должен обеспечить минимальную загрузку центрального процессора (ЦП). Однако прежде всего необходимо, чтобы код было удобно читать человеку. Общее потраченное время и усилия программистов гораздо более ценны, чем ресурсы процессора, а код, который трудно понять, снижает эффективность вашей организации (а также нашего коллективного человеческого разума).

В главе 5 вы познакомитесь с концептуальной основой оптимизации производительности и подводными камнями слишком раннего ее проведения. Дональд Кнут (Donald Knuth), один из отцов computer science, говорил: «Преждевременная оптимизация — корень всех зол!» Если вам необходимо оптимизировать код, используйте принцип 80/20: попробуйте улучшить 20 % функций, выполнение которых занимает 80 % времени. Избавьтесь от узких мест. Игнорируйте остальное. Повторите.

В главе 6 мы вместе совершим экскурс в (буквально) захватывающий мир потока Михая Чиксентмихайи (Mihaly Csikszentmihalyi). Состояние потока — это истинная концентрация, которая многократно увеличивает продуктивность и помогает создать атмосферу глубокого погружения в работу, как говорит профессор информатики Кэл Ньюпорт (Cal Newport), который также привнес некоторые идеи в эту главу.

В главе 7 изложена философия Unix, заключающаяся в том, чтобы делать что-то одно и делать это хорошо. Вместо монолитного (и потенциально более эффективного) ядра с огромным набором функций разработчики Unix предпочли реализовать небольшое ядро со множеством дополнительных вспомогательных функций. Это помогает экосистеме Unix расширяться, оставаясь при этом чистой и (относительно) простой. Мы выясним, как применить эти принципы в работе.

В главе 8 вы познакомитесь еще с одной очень важной областью компьютерных наук, которая выигрывает от минималистичности мышления: дизайн интерфейса и взаимодействия с пользователем (user experience, UX). Подумайте о различиях между Yahoo Search и Google Search, Blackberry и iPhone, OkCupid и Tinder. Самые успешные технологии часто имеют максимально простой пользовательский интерфейс по той причине, что в дизайне работает принцип лучше меньше, да лучше.

В главе 9 мы вновь обратимся к силе фокуса и рассмотрим, как применять этот принцип в различных областях, чтобы значительно повысить вашу продуктивность и оптимизировать работу ваших программ!

Наконец, мы подведем итоги, дадим практические рекомендации и отпустим вас в сложный мир, снабдив набором надежных инструментов для его упрощения.

3 «Одно слово, объясняющее успех Билла Гейтса и мой успех: “фокус”. — Уоррен Баффет». — Примеч. пер.