Найти тему
Войти в IT

Хороший, Плохой, Злой. ТОП-10 ужасных практик, отвратительных приёмов и антипаттернов в программировании. Трилогия.

Оглавление

Часы пробили полночь, и вязкий зловещий туман спустился с тёмных гор. Раздался раскат грома, и карета золушки превратилась в тыкву. Где-то на ужасных болотах, собака Баскервиллей издала леденящий душу протяжный вой. Настало время страшных сказок из мира программирования и цифровых технологий. Сказок о худших практиках, отвратительных приёмах, и ужасных архитектурных решениях. Сказок о программных продуктах, которые вместо удобства и пользы, приносят разруху, боль и проблемы.

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

Всё это такие приёмы и практики, которые не нужно использовать никогда - хоть в каком бы то ни было проекте. Это настоящие вредные привычки, которые следует всячески избегать, и неистово искоренять их применение как в личном программном коде, так и в рамках коллективного творчества. Это такие особенности разработки, которые приводят не к развитию создаваемого продукта, а к его деградации и последующему упадку. Ну, я думаю что ты меня понял, и закончим на этом с красивыми метафорами.

Страшные сказки из мира программирования и из опыта практической работы с базами данных.
Страшные сказки из мира программирования и из опыта практической работы с базами данных.

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

Когда мы говорим про то, что какой-то программный код "хороший" - мы обычно подразумеваем не субъективную снобскую оценку, а скорее соответствие этого кода некоторому набору правил. Аналогично, указывая на то что какой-то другой программный код "плохой" или "ужасный" - мы так же делаем сравнение этого кода с этим же условным набором правил. "Хорошесть" и "Плохость" кода - это лишь степень его соответствия некоторому набору правил (паттернов / принципов проектирования), к которому программисты приходят спустя годы работы и фактического опыта. Вот эти правила и постараемся сегодня описать в настоящей трилогии.

Метрики качества и надежности программного кода 👨‍💻

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

Хотя условного "идеала" в природе не существует, да и не может существовать в принципе (на то он и идеал) - тем не менее, лучше стремиться к светлым созидательным началам, нежели чем делать всё "как попало". По крайне мере, я считаю именно таким образом.

Примеры различных решений с точки зрения известного фильма и популярных языков программирования. Хороший. Плохой. Злой. Да простит меня JavaScript.
Примеры различных решений с точки зрения известного фильма и популярных языков программирования. Хороший. Плохой. Злой. Да простит меня JavaScript.

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

Трилогия про программные продукты различного качества, типичные подходы людей к делам, и их результаты ☘️

Есть такой замечательный фильм о жизни - "Хороший, Плохой, Злой". В нём рассказана история судеб трёх очень разных людей, преследующих одинаковую цель, но использующих совершенно разные подходы к делу. Поверхностный взгляд может сказать, что это классический "вестерн" - и к слову сказать он будет абсолютно (хоть и частично) прав. Фильм является прародителем жанра "спагетти-вестерн" и родоначальником целого класса искусства. Но стоит погрузиться чуть глубже, и можно заметить другое - фильм повествует о том, как одну и ту же задачу можно решить тремя принципиально разными подходами: "Хорошим, Плохим и Злым". Какой подход победит? Какой проиграет? Вот об этом данный фильм, и данная трилогия статей.

С точки зрения программирования, вышеописанная тройственная концепция ложится просто идеально. В мире информационных технологий точно так же существует три принципиально разных подхода к созданию продуктов - "Хороший", "Плохой" и "Злой". С моей точки зрения, начинающему программисту очень важно отличать хороший стиль работы от плохого. И определённо, избегать применения "злых" практик, делая выбор в пользу практик "хороших".

Почему же тогда статья называется "ТОП-10 ужасных практик, отвратительных приёмов и антипаттернов в программировании"? Очень просто! Потому, что плохие приёмы в программировании используются гораздо чаще, чем хорошие. Потому что создание низкокачественного кода происходит гораздо чаще, чем создание продуманного и эффективного кода. Потому что иногда, безумие исполнения, кривая архитектура и ужасная производительность программ - это норма жизни для многих продуктов.

Программирование для одних людей является работой и источником дохода, а для других - магическим чёрным ящиком, полным тайн и загадок. Специфика работы программиста представляет из себя волшебство для непосвящённого внешнего наблюдателя. Смотри сам! Работу врача принято оценивать по факту выздоровления пациента. Хороший строитель славен тем, что его дома не разваливаются со временем. Уважаемый фермер продаёт вкусный и сочный урожай со своего поля. Суть в том, что работа многих специалистов оценивается достаточно прямым образом - по внешним признакам, видимым глазу. И мне вовсе не обязательно иметь высшее образование например юриста, чтобы понимать простой факт - "положительный результат работы юриста - это выигранное дело". И тут на арену выходят программисты!

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

На днях - первая часть. Кто такой "Хороший" и каковы его принципы.

Знаменитая трилогия "Хороший. Плохой. Злой" в применении к программированию. Поехали!
Знаменитая трилогия "Хороший. Плохой. Злой" в применении к программированию. Поехали!

🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥

-4

🚀 P.S. Для тех, кто хочет не просто читать о программировании, а начать свой путь джедая прямо сейчас, приглашаю на Boosty! Там эксклюзивный обучающий материал по программированию для любого уровня подготовки. А ещё там можно посмотреть, как автор выглядит в жизни. Жми сюда и полетели!🚀

P.S.2 Ещё у меня есть Telegram-канал. Там посты чуть проще и веселее. Ссылка

P.S.3 Для любителей хорошего кино - ссылка на фильм "Хороший. Плохой. Злой". Рекомендовано для просмотра начинающим программистам.