Что за зверь: анти-паттерны в программировании — часть 1

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

Magic numbers в IT

«Магическим числом» обозначают константу, которую используют в коде, но сама по себе она лишена смысла. Так, вам могут раз за разом попадаться непонятные числа, разобраться с которыми можно только при помощи комментариев.

Зачастую, числа без семантики служат способом идентификации данных, но этот фокус может быть использован в абсолютно любых целях. Появление данного анти-паттерна — это плохое явление, хоть бы потому, что читабельность кода резко падает и никто, кроме автора не сможет понять «что куда» и «почему так». А через полгода-год это перестанет понимать и сам автор сего чуда. Придется переписывать все заново, а это отнимет время и деньги.

«Магические числа» появляются у новичков и в спешке. Избежать появления констант можно, оговорив этот вопрос до начала разработки.

Комментарии ради комментариев

Это когда вы видите тучу комментариев, без которых можно было обойтись. Комментарии — предельно полезный инструмент. С их помощью профессионалы объясняют причину тех или иных действий, что облегчает процесс чтения кода. Признаком непрофессионализма также считаются диалоги в комментариях — для подобных развлечений давно придумали code review и/или мессенджеры.

Programming by permutation

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

God Object для разработчиков

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

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

Golden hammer

Золотым молотком называют полную уверенность в универсальности какого-либо решения, из чего вытекает слишком частое его использование. Так, программист может совать один и тот же паттерн в любую программу, вне зависимости от уместности и функциональности.

Данная ошибка встречается не только у новичков — опытные ребята могут прикипеть к одному решению и всеми силами пытаться «затолкать квадратик в отверстие для кружочка». У неопытных разработчиков другие причины — часто, это нежелание учить новое, если освоенное «и так работает». Разумеется, с обеими этими ситуациями стоит активно бороться, ведь эффективная разработка — это выбор подходящих к ситуации решений, а не: «Я выучил что-то одно и буду использовать это до конца своих дней».

Выводы

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

20.11.2018
122
Автор: Ася Яскер