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

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

Spaghetti code

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

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

Soft code

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

Accidental complexity

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

Ненужная сложность может затесаться в абсолютно любой код — повторяющиеся/лишние части кода, бесполезные проверки, недостаточная оптимизация — меню Accidental complexity очень разнообразно. Данный анти-паттерн снижает скорость работы с системой и является проявлением некомпетентности разработчика и/или некачественного рефакторинга. Исправить ситуацию просто — code review и рефакторинг.