Подтвердить что ты не робот

"refactor refactor refactor refactor your code". Что это значит и почему?

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

4b9b3361

Ответ 1

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

В основном, вы рефакторинг, применяя ряд правил изменения кода, которые улучшают читаемость кода и повторное использование, не влияя на логику.

Всегда unit test до и после рефакторинга, чтобы убедиться, что ваша логика не затронута.

Ответ 2

Эта статья Википедии даст вам представление о типах вещей, включенных в общую концепцию Рефакторинга.

Идея заключается в том, чтобы адаптировать/развить свой код, когда вы идете. Простыми вещами могут быть переименование переменных или параметров метода, но другие могут передавать дополнительный параметр или отбрасывать один или изменять его тип. Модель данных также может развиваться. и др.

Часто рефакторинг работает рука об руку с модульным тестированием, в результате чего риск "взлома чего-то" компенсируется тем фактом, что такая проблема может быть обнаружена путем автоматического тестирования ( обеспечить хороший охват и соответствующие тестовые примеры...).

В двух словах, возможность рефакторирования (и, кстати, большинство IDE или надстроек для IDE) предлагает различные инструменты, которые делают рефакторинг проще и менее подвержен ошибкам) ​​позволяет писать быстрее, не подчеркивая некоторые решения ( "если этот объект включает в себя массив или список и т.д.), позволяя программисту изменить некоторые из этих решений с течением времени и с добавленной проницательностью, предлагаемой с помощью работоспособного, если не идеального решения. См. связанную концепцию: гибкая разработка.

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

Ответ 3

Мартин Фаулер, вероятно, сделал все возможное, чтобы популяризировать рефакторинг, но я думаю, что хорошие разработчики всегда делали такие реструктуризации. Посмотрите , и его 1999 Рефакторинг, что является отличным введением и каталогом конкретных рефакторингов с использованием Java.

И я вижу, что он соавтор совершенно нового Рефакторинг, Ruby Edition, который должен стать отличным ресурсом.

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

Чтобы взять один пример, я написал небольшую (Java 1.6) клиентскую библиотеку для доступа к удаленным веб-сервисам (используя архитектурный стиль REST). Основная часть этой библиотеки находится в одном исходном файле, а около половины из них касается веб-сервисов, а другая половина - это простой в памяти кеш ответов (для производительности). Со временем обе половины выросли в функциональности до такой степени, что исходный файл становился слишком сложным. Поэтому сегодня я использовал рефакторинг Fowler "Extract Class", чтобы переместить логику кэша в новый класс. До этого мне пришлось сделать некоторые "методы извлечения", чтобы изолировать логику кэширования. По пути я сделал несколько "Переименовать методы" и "Ввести объясняющую переменную".

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

Ответ 4

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

Рефакторинг - это долгосрочная инвестиция в ваш код - поскольку он не влияет на внешний вид программного обеспечения, часто возникает давление (от руководства и т.д.), чтобы "просто заставить его работать и двигаться дальше" к следующему ". Хотя иногда это может быть правильным решением, в зависимости от бизнес-драйверов, кодовая база, которая претерпевает изменения, но не получает рефакторинга, будет распадаться на сложный багги (см. Также Technical Задолженность).

В частности, главные причины для рефакторинга обычно следующие:

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

Ответ 5

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

Ответ 6

"Рефакторинг - это процесс изменения программной системы таким образом, чтобы он не изменял внешнее поведение кода, но улучшал его внутреннюю структуру". - MartinFowler в RefactoringImprovingTheDesignOfExistingCode

см. WhatIsRefactoring для получения дополнительных пояснений.

Ответ 7

Код рефакторинга обычно означает принятие кода, который был исправлен несколько раз и перезаписал его, чтобы учитывались потребности более поздних исправлений.