Когда необходим рефакторинг? Вопрос

Evg Evg 16 Сентября 2021

При рефакторинге мы должны учитывать много вещей (см. прикрепленные посты ниже). Что вы можете сказать по этому поводу?

4 Комментария

  1. Я считаю, что есть упрощать, то есть 3 уровня кода.

    • Одноразовый код, который используется для задания, но никогда не используется повторно.

    • Код используется для одного проекта, часть кода может использоваться повторно.

    • Код уровня библиотеки, который будет основной функциональностью проекта.

    Ключ к хорошему коду — последовательность, а ключ к непротиворечивости — простота.

    Думайте о коде как о любой инженерной дисциплине. Они говорят, что любой может построить мост между двумя точками (заполнить промежуток землей), но требуется инженер, чтобы построить конструкцию, которая просто стоит, используя минимальные ресурсы и требуя минимального обслуживания, при этом делая как можно больше.

    Во многих ситуациях лучшим решением будет заполнить пробел землей, так как это просто дешево и прослужит вечно. Однако, если вам нужен проход или вы хотите перегружать это очень тяжелыми грузами, тогда требования меняются, и вам нужно другое решение. Зачем тратить время на ускорение выполнения кода, если время выполнения не имеет значения? Например, C быстрее Python, но Python достаточно быстр для большинства задач.

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

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

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

    Многие приложения, над которыми я работал, столкнулись с проблемами, потому что на этом уровне библиотеки не было уделено достаточного внимания, а дерьмовый код используется в качестве основы для критически важных приложений. Затем исправление ошибок приводит к поломке приложений, поэтому вы становитесь все более и более ограниченными в том, что можно изменить.

  1. Работает перенос тут, спасибо.

  1. Если вы знаете, что можете что-то оптимизировать, это хороший знак. Раз. А мерой качества кода на большинстве рабочих мест является простота. Два.

    А три, многие говорят:

    если код работает, не содержит ошибок или хрупкого кода, это все, что вам нужно.

    Большинство из нас, возможно, будет писать не лучший код, если мы посмотрим сквозь призму самых умных и лучших парней. Так что особо переживать не стоит, если только вы не добавили 50 циклов for в одном методе.

    Рефакторинг необходим всегда, но насколько глубоко? Это зависит от задач. В первом ответе хорошо сказано.

    P.S. тут есть наслоение цитаты

  1. Спасибо (+), необходимо подправить это.