Другой вариант заключается в использовании EXCEPT
select a
from temp
except
select a
from temp2;
Две вещи.
Уровень, на котором Вы выполняете это, может быть медленным.... Как правило, Вы предполагаетесь к, "просто поддерживают, это" не фиксирует его.
Во время "изучения, как поддержать его" фаза, однако, можно записать много модульных тестов.
Затем поскольку ошибки найдены и улучшения требуются, можно добавить еще больше тестов.
Это является Гибким, относился к наследию.
Тесты записи, как только Вы можете. Предпочтительно против требований (если они существуют). Запустите с функциональных испытаний. Осуществите рефакторинг в маленьких блоках. Каждый раз, когда Вы касаетесь кода, оставляете его инструментом для очистки и лучше чем тогда, когда Вы запустили.
Я думаю, что создал бы маленький набор Актуальной информации: Какие вызовы Действия, который функционирует и т.д.
Оттуда, я посмотрел бы на рефакторинг. Дублированная Логика, кажется, что-то, что могло быть пересмотрено, но помнить это
Я думаю, что самое большое желание сопротивляться, "Просто восстанавливают целую проклятую вещь!" и получите обзор системы сначала, для демистифицирования зверя.
Я видел, работал, и работаю в кодовой базе, которая удовлетворяет все условия, который упоминается в вопросе :-)
Подход, сопровождаемый в поддержании этой кодовой базы НИЧЕГО не должен ПОВРЕЖДАТЬ. FWIW, работы кода и конечные пользователи счастливы. Никто не собирается слушать крики разработчика, что существует дублирование кода, трудно кодированные строки и т.д. Мы просто крадем некоторое время, чтобы зафиксировать безотносительно возможный и проявить предельную заботу для не представления новых ошибок..
комната sudo-rf /
Но более серьезно, я думаю, что это должно быть оценено. Если код постоянно является источником запросов на изменение, и изменения являются трудными затем в ближайшее время, необходимо рассмотреть, стоит ли это того для попытки refactor/re-engineer система во что-то более современное. Конечно, это не всегда практично, таким образом, Вы часто заканчиваете со всего несколькими людьми в командах, которые ответственны за поддержание частей прежней версии. Как можно больше, все в команде должны смочь поддержать все части системы......
Еще одна вещь, что я думаю, важна, должен отследить количество времени и усилие, что команда тратит работу над обслуживанием/запросами новых функций выполнения унаследованной системы. Эти метрики могут быть убедительными при оценке планирования нового усилия заменить системы/компоненты прежней версии.
Я в основном соглашаюсь со всем, что Paul C сказал. Я не священник TDD, но каждый раз, когда Вы касаетесь кодовой базы прежней версии - особенно один, с которым Вы не глубоко знакомы - у Вас должен быть твердый способ повторно протестировать и удостовериться, что Вы следовали за Hippocrates: Во-первых, не причинить вреда. Тестирование, хорошая единица и регрессионные тесты, в частности, о единственном способе сделать ту игру.
Я настоятельно рекомендую забирание копии Инвертирования: Секреты Инженерного анализа программного обеспечения, если это - кодовая база, с которой Вы незнакомы. Хотя эта книга переходит к большим глубинам, которые являются вне Ваших текущих потребностей (и мои, в этом отношении), она учила меня много тому, как к безопасно и нормально работают с чужим кодом.