“осуществите рефакторинг, осуществляют рефакторинг, осуществляют рефакторинг Ваш код”. Что это означает точно и почему делают это?

если Вы межупрощены только в ударе "для ((...))" решения, представленного выше, является лучшим, но если Вы хотите что-то POSIX SH, совместимый, который будет работать над всеми нельдами, необходимо будет использовать "expr" и "в то время как", и поэтому" (())" или "seq" или "i=i+1" не то, что портативен среди различных оболочек

12
задан Carl Manaster 17 November 2009 в 18:07
поделиться

6 ответов

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

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

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

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

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

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

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

11
ответ дан 2 December 2019 в 04:02
поделиться

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

2
ответ дан 2 December 2019 в 04:02
поделиться

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

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

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

12
ответ дан 2 December 2019 в 04:02
поделиться

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

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

  1. Избавление от дублированного кода
  2. Разделение длинного метода на более мелкие части путем извлечения новых методов из частей более длинного метода
  3. Разделение класса, у которого слишком много обязанностей, на меньшие, более целевые классы или подклассы
  4. Перенос методов из одного класса в другой. Часто это делается для того, чтобы методы находились в том же классе, что и данные, с которыми они работают.
6
ответ дан 2 December 2019 в 04:02
поделиться

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

-2
ответ дан 2 December 2019 в 04:02
поделиться

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

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

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

Возьмем один пример. Я написал небольшую (Java 1.6) клиентскую библиотеку для доступа к удаленным веб-службам (используя архитектурный стиль REST). Большая часть этой библиотеки находится в одном исходном файле, и примерно половина этого связана с веб-сервисами, а другая половина - это простой кэш ответов в памяти (для производительности). Со временем функциональность обеих половинок выросла до такой степени, что исходный файл стал слишком сложным. Итак, сегодня я использовал рефакторинг Фаулера «Извлечь класс», чтобы переместить логику кеширования в новый класс. До этого мне приходилось использовать некоторые «методы извлечения», чтобы изолировать логику кеширования. Попутно я сделал несколько «Переименовать методы» и «Ввести объясняющую переменную».

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

до такой степени, что исходный файл становился слишком сложным. Итак, сегодня я использовал рефакторинг Фаулера «Извлечь класс», чтобы переместить логику кеширования в новый класс. До этого мне приходилось использовать некоторые «методы извлечения», чтобы изолировать логику кеширования. Попутно я сделал несколько «Переименовать методы» и «Ввести объясняющую переменную».

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

до такой степени, что исходный файл становился слишком сложным. Итак, сегодня я использовал рефакторинг Фаулера «Извлечь класс», чтобы переместить логику кеширования в новый класс. До этого мне приходилось использовать некоторые «методы извлечения», чтобы изолировать логику кеширования. Попутно я сделал несколько «Переименовать методы» и «Ввести объясняющую переменную».

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

и «Введение объясняющей переменной».

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

и «Введение объясняющей переменной».

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

8
ответ дан 2 December 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: