По определению, пытаясь максимизировать или минимизировать более одного параметра, вы занимаетесь не оптимизацией, а созданием компромисса. Множество людей считает, что оптимизировать значит просто «делать все лучше», но на самом деле такое определение как раз будет препятствовать реальному улучшению.
На практике одновременная оптимизация нескольких переменных чаще всего не получается: вам следует концентрироваться на одной переменной в единицу времени. Только таким образом вы сможете понять, как изменения влияют на систему в целом. Вы пытаетесь найти причинно-следственную связь (а не корреляцию) в своих изменениях и не всегда заметных связях. Поэтому, думая сразу о нескольких вещах, вы не сможете понять, какие именно изменения привели к каким результатам.
Помните, что вы не сможете добиться успешной оптимизации, работая одновременно с несколькими переменными. Выберите самую важную и сконцентрируйте на ней свои усилия.
Элегантность неестественна, и достичь ее можно только ценой больших усилий. Изначально результат не будет элегантным, но если, создав продукт, вы поймете, как можно его улучшить, а затем переделаете его, то после некоторого неизвестного количества итераций сможете получить нечто по-настоящему элегантное.
Эрик Наггум, программист
Не все изменения системы или мероприятия по ее совершенствованию обязательно повлияют на результат ее работы.
Рефакторинг представляет собой процесс изменения системы, направленный на повышение ее эффективности без изменения результата ее работы. Изначально этот термин появился в области программирования. Программисты проводят многие часы за переписыванием кода, который даже при самом благоприятном исходе будет делать то же самое, что и прежде.
Основное преимущество рефакторинга не связано с улучшением результата работы системы: скорее, речь идет о превращении системы в более быструю или эффективную, то есть у вас появляется возможность либо ускорить работу, либо задействовать для достижения результата меньше ресурсов.
Рефакторинг начинается с деконструкции процесса или системы, после которой осуществляется поиск шаблонов. В чем состоят критически важные процессы, без точного соблюдения которых вы не сможете достичь желаемой цели? Должны ли эти процессы следовать в определенном порядке? В чем состоят нынешние ограничения? Что кажется самым важным? Соберите максимум информации о том, как работает система, а затем хорошенько ее проанализируйте.
Скорее всего, вы заметите, что в системе есть элементы, не имеющие определенного смысла, — например, некий метод работы, поначалу казавшийся оптимальным, но со временем переставший таковым быть.