Я знаю, что рефакторинг - это "изменение структуры программы, так что функциональность не изменяется". Я разговаривал с некоторыми из парней, с которыми я работаю в своем последнем проекте в университете, и я был удивлен, что у них есть гораздо более обширный (из-за лучшего слова) взгляд на рефакторинг.
Я рассматриваю рефакторинг как вещи, такие как методы извлечения и классы переименования. Они также предложили такие вещи, как изменение структур данных (например, Java LinkedList
до ArrayList
), изменение алгоритмов (с использованием сортировки слияния вместо сортировки пузырьков) и даже переписывание больших фрагментов кода в качестве рефакторинга.
Я был совершенно уверен, что они были неправы, но я не мог дать веских оснований, потому что то, что они предлагали, изменило программу (и, предположительно, сделало ее лучше), не изменив ее поведения. Я прав, и что еще более важно, почему?