Яков Сироткин (yakov_sirotkin) wrote,
Яков Сироткин
yakov_sirotkin

Мои любимые рефакторинги

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

Наибольшее удовлетворение от проделанной работы я испытываю тогда, когда удаляю ненужный код. Это требует тщательного предварительного исследования, чтобы отследить все возможные вызовы, но в результате код безусловно становиться проще для понимания и дальнейшего совершенствования. Огромную помощь в этом оказывает Find Usages в IntelliJ IDEA, но не стоит забывать, что иногда бывает нужен и честный полнотекстовый поиск.

Другой очень позитивный рефакторинг — это исправление багов. Тут я явно конфликтую с классическим подходом, но каждый баг — это сильнейший источник плохого запаха. Даже когда само понятие рефакторинга ещё не было так популярно, починка багов считалась высокоприоритетным и важным делом, ещё в 2000-м году Джоэл прямо спросил: Do you fix bugs before writing new code?.

Помимо явно удаления мусора есть ещё один способ сокращения объёмов проекта: замена одинаковых кусков кода одним общим методом. То есть если по каким-то причинам вы отошли от принципа DRY (Don’t repeat yourself) — к нему полезно вернуться.

В достававшихся мне проектах идеи ООП обычно были зверски поруганы и появление каких-то разумных объектов было крайне затруднено. Но если долго разгребать старый код, удалять ненужное и приводить в порядок оставшееся, то есть шансы, что появиться возможность сделать качественно более хорошую систему. Одни объекты будут наследниками других объектов, появятся понятные интерфейсы, проект станет действительно просто расширять.
Tags: refactoring
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 45 comments