Одна из трудностей, с которой мы сталкиваемся, — это поиск кратких и содержательных выжимок без лишней воды. Часто приходится выбирать между чтением громоздких книг по 500 страниц или бесконечным пролистыванием блогов, лент и статей в интернете. Это разочарование подтолкнуло меня к созданию сжатой, практической книги — о том, как писать понятный, опрятный и уважающий коллег код. Всё — на конкретных примерах, преимущественно с использованием PHP.
Тема качественного кода сложна и многогранна. Некоторые её аспекты неизбежно вызывают споры и сводятся к вопросам вкуса и личных предпочтений. Такие вопросы в книге опущены. В центре внимания — конкретные, проверенные практикой правила, которые помогают писать опрятный на вид код.
Важно понимать, что темы чистого кода, архитектуры и объектно-ориентированного программирования — это по-настоящему глубокие области. Углубляться в них можно бесконечно. Однако в этой книге мы сознательно сосредотачиваемся на визуальной читаемости и внешней аккуратности кода. Почему? Потому что именно с этого всё начинается.
Это как человек-денди: он входит в комнату — и ты сразу замечаешь, что он ухожен, аккуратен, элегантен. Ты ещё не знаешь, о чём он будет говорить, но уже понимаешь — перед тобой тот, кто уважает себя и окружающих.
Так и код: даже если ты не вникал в его логику, по внешнему виду видно, что автору не всё равно. Это уважение — к себе, к коллеге, к команде.
Эта книга — о том, как сделать код чуть приятнее глазу. И пусть это станет вашим первым шагом к более глубокому пониманию чистоты и структуры.
Предполагается, что читателем книги в первую очередь станет специалист начального уровня, уже принимавший участие хотя бы в одном коммерческом, личном или учебном проекте. Но и опытные специалисты найдут здесь полезные идеи — особенно если их профессиональный путь был связан с одной командой, похожими задачами и устойчивыми привычками. Она поможет лучше понять, как работать в команде и избегать раздражения у коллег. Для руководителей она будет полезна как пособие для команды и как источник рекомендаций при ревью кода.
Если вы сомневаетесь, «Подходит ли это мне?», попробуйте ответить на короткий чек-лист:
- Я имею базовые знания программирования.
- Я участвовал в создании хотя бы одного коммерческого, личного или учебного проекта.
- Я хочу улучшить свой код и работать в команде более
эффективно.
Если вы ищете глубокое погружение в теорию объектно-ориентированного программирования, архитектуру приложений или сложные паттерны проектирования, возможно, вам стоит начать с трудов Мартина Фаулера, Роберта Мартина, Стива Макконнелла и других авторов.
Здесь вы не найдёте пространных рассуждений о том, почему static — это зло, null — ошибка на миллиард долларов, или
как строго следовать принципам SOLID.
Мы не будем явно обсуждать coupling и cohesion, рассчитывать показатели maintainability или разбирать уровни абстракций.
Вместо этого книга предлагает практические рекомендации, основанные на существующих идеях и личном опыте, — чтобы помочь вам писать понятный, последовательный и дружелюбный к другим код в реальных проектах.
Вы можете прочитать её залпом за вечер, но вряд ли это принесёт ощутимую пользу. Гораздо эффективнее — читать по одной-две главы за раз. Применять на практике. Обсуждать с коллегами. Спорить. Переделывать старый код. И главное — почувствовать разницу.
Если спор зашёл в тупик или у вас возник вопрос по содержанию книги, пожалуйста, создайте issue в GitHub-репозитории: https://github.com/tabuna/dandy-code
Искренне надеюсь, что чтение будет для вас интересным и полезным — и что эта книга поможет строить приложения проще, чище и эффективнее. Спасибо, что читаете.
Эта книга прошла проверку рядом специалистов, чей опыт и знания помогли повысить её качество. Они поддерживали меня, делились обратной связью, участвовали в обсуждениях и внимательной вычитке текста. Именно благодаря их вкладу книга стала лучше. Я с удовольствием увековечиваю их имена на этих страницах:
Владислав Абросимов, Дмитрий Афанасьев, Игорь Бабаев, Егор Бугаенко, Зайнулла Жумаев, Иван Сорокин, Сергей Ивлев, Денис Лопухин, Сергей Предводителев, Денис Тарков, Евгений Уткин, Андрей Хэллдар, Владимир Чепелев.
Особые слова благодарности я хочу выразить моим друзьям:
- Илье Чубарову
- Дмитрию Скирте
Хватит предисловий. Пора наводить порядок.