В этой статье я попробую объяснить, что представляют собой шаблоны проектирования, какие дают плюсы и чем могут навредить, а навредить они могут не меньше, чем помочь.

Что же представляет из себя шаблон проектирования? Шаблон проектирования – это удачное решение какой-либо задачи (обычно это понятие применяется к ООП парадигме), которое проверено временем на множестве проектов и большим количеством разработчиков. Собственно, так шаблоны и появились, какой-то разработчик нашел решение для какой-то задачи, оно ему понравилось и он поделился им с другими разработчиками. Им тоже понравилось и это решение стало использоваться часто, так оно закрепилось в сообществе. И уже после, эти решения попадают в книги и статьи, коих можно найти множество в магазинах и интернете.

Перейдем к плюсам.

Начну с самого простого и понятного пункта, который будет по вкусу всем, хоть и большинство программистов в этом не признается. Первый плюс – это возможность похвалиться перед коллегами знанием шаблонов проектирования ( 🙂 ) и если вам кажется, что это шутка, то это не она. Знание и умение применять шаблоны и вправду ценится среди сообщества программистов, да и при приеме на работу они тоже будут жирным плюсом. Знание “Шаблонов” – это один из тех навыков, который отделяет новичков от опытных разработчиков.

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

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

На этом плюсы заканчиваются.

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

На этом мой список плюсов и минусов заканчивается.

В качестве итога могу посоветовать знакомится с шаблонами, но не рваться применять их везде где только можно. Если использовать их в разумных количествах и в нужных местах, то от них будет исходить только польза. Но возникает вопрос, как найти эти нужные места и определить разумные количества? Ответ на него – пишите свои проекты с использованием шаблонов для тренировки и советуйтесь с теми кто их уже использует. И еще один момент, если вы программируете хотя бы несколько лет и никогда ранее не изучали шаблоны проектирования, то, скорее всего, вы ими все равно пользовались, так как многие из них рано или поздно находятся самостоятельно. Так было и со мной. Когда я начал подробно знакомиться с этой темой, то сильно удивился, что некоторыми из них пользовался постоянно. Возможно так будет и с вами.

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

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

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