Есть ли какое-либо формальное определение для “рефакторинга”?

Пожалуйста, добавьте correctOrientation: true в CameraOptions, это поможет вам

8
задан Charles Stewart 20 April 2010 в 09:14
поделиться

4 ответа

Это - интересный вопрос, и один я не рассмотрел. Я сделал немного поиска с помощью Google и придумал эту бумагу (PDF) при рефакторинге в AOP, который пытается применить некоторое математическое моделирование к аспектам, чтобы показать, что функциональные аспекты имеют ту же гибкость как традиционные аспекты, но с уменьшенной сложностью. Я не прочитал целой газеты, но Вы могли бы найти что-то там.

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

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

Интересный материал.Надеюсь, это поможет.

3
ответ дан 5 December 2019 в 23:17
поделиться

Могло быть интересно отметить, что большинство Рефакторингов происходит в пар:

  • Добавьте, что параметр - удаляет параметр
  • Класс/Метод извлечения - Встроенный Класс/Метод
  • Потяните Поле/Метод - Выпадающее Поле/Метод
  • Изменитесь двунаправленная ассоциация к однонаправленному - изменяют однонаправленную ассоциацию на двунаправленный
  • ...

Применение двух рефакторингов пары является пустым преобразованием.

Для пары рефакторинга R, R':

R' (R (код)) = код

2
ответ дан 5 December 2019 в 23:17
поделиться

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

таким образом, мы не можем только утверждать, что преобразование рефакторинга T на программе P имеет те же свойства R прежде и после рефакторинга, но свойства R' пересмотренной программы P' должны быть, по крайней мере, эквивалентны R

given program P implies R
refactoring transformation T(P) produces P'
where (P' implies R') and (R' is equivalent to or subsumes R')

мы можем также утверждать, что вводы и выводы остаются тем же или эквивалентный

но последовать Вашему примеру, возможно, мы хотим определить преобразование рефакторинга T как P с 4 кортежами, меня, O, R, где P является исходной программой, я - исходные данные и/или предварительные условия, O является выводами и/или постусловием, и R является преобразованной программой, затем утверждайте (использование временной логики?) это

P:I -> O

содержит перед преобразованием

T(P) -> R

определяет преобразование, и

R:I -> O

содержит после преобразования

моя символьная математика ржава, но это - общее направление

это сделало бы хорошую магистерскую диссертацию, BTW

2
ответ дан 5 December 2019 в 23:17
поделиться

Хорошо не непосредственно, но в денежном выражении - я могу сказать Да. Я не могу придумать уравнение на этом :)

Код, правильно написанный, свободный от сложности (который мог произойти из-за рефакторинга), может сэкономить время и следовательно деньги.

-2
ответ дан 5 December 2019 в 23:17
поделиться
Другие вопросы по тегам:

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