Скажем, у меня есть класс, который хранит некоторые данные в «данных» частной переменной, например. массив. Существуют различные методы этого класса, использующие переменную данных и различные модульные тесты, тестирующие эти методы. Теперь по какой-то причине вы хотите изменить тип данных контейнера (например, карту вместо массива), которую нужно обрабатывать несколько иначе. Если вы просто изменяете тип данных из массива, чтобы отобразить весь код в методах, которые были сломаны, и каждый из них должен был бы изменить их все, прежде чем какие-либо модульные тесты будут снова запущены. Обычно это не то, что нужно. Итак, каков рекомендуемый способ сделать это итеративно, не нарушая сразу весь код?Каковы рекомендуемые способы реорганизации внутреннего представления класса?
ответ
Ед. Испытания обычно проверяют внешнюю функциональность класса.
Поэтому рефакторинг классов «внутренности» не должен нарушать никаких тестов. (это одно из преимуществ тестирования.).
Многие IDE позволят вам сделать автоматический рефакторинг внутренних компонентов за один удар. но вы не указали язык или IDE, которые вы используете.
Если ваш класс настолько велик, что изменение типа данных создает «часы» работы, то вам, вероятно, следует рассмотреть возможность разбиения вашего класса на более мелкие биты функциональности до рефакторинга типа данных.
В качестве альтернативы вы можете использовать рефакторинг в кусках и попытаться сохранить стабильность класса и «прокомментировать» определение массива временно, чтобы сообщить вам, где вам нужно сосредоточиться.
Проблема не в том, что что-либо нарушает тесты, но код не будет компилироваться после изменения внутренних компонентов. Автоматический рефакторинг std :: map в std :: vector с использованием C++ и eclipse cdt? – user1304680
Ну, в этом случае вам нужно реорганизовать точку, в которой код будет скомпилирован снова, если вы помечаете свой вопрос своим языком и идеей, вы сможете получить более конкретный ответ. –
- 1. Каковы рекомендуемые способы обработки ссылок на встроенные документы в MongoDB?
- 2. Каковы стандартные/рекомендуемые способы хранения данных базы данных, контролируемых версиями?
- 3. Каковы хорошие способы представления пользователю часовых поясов?
- 4. Рекомендуемые способы отладки функций Clojure?
- 5. Каковы различные способы инициализации
- 6. Каковы различные способы загрузки класса в Java
- 7. Каковы долгосрочные последствия реорганизации репозитория подрывной деятельности
- 8. Каковы рекомендуемые методы функционального полиморфизма в R?
- 9. Рекомендуемые способы импорта проекта maven в IDE?
- 10. Параллельная обработка файлов: какие рекомендуемые способы?
- 11. Рекомендуемые способы преобразования текста в HTML?
- 12. Каковы хорошие способы архивирования пользовательского класса «ClaimsAuthorizationManager» Windows Identity Foundation?
- 13. Отношение внутреннего внутреннего класса
- 14. Каковы рекомендуемые методы Semantic Web для разработчиков?
- 15. Каковы все рекомендуемые методы оптимизации в Hive?
- 16. Каковы рекомендуемые учебные материалы для SSIS?
- 17. Каковы рекомендуемые минимальные докеры-хостинг-дистрибутивы?
- 18. Каковы рекомендуемые ресурсы для изучения SSIS?
- 19. Каковы ваши наиболее рекомендуемые предпочтения Visual Studio?
- 20. Каковы рекомендуемые способы управления проектом django в производстве (на сервере apache)
- 21. Метод локального внутреннего класса и внутреннего класса
- 22. Каковы некоторые способы реализации класса Money на Java?
- 23. Каковы способы использования атомных путей?
- 24. Каковы способы определения местоположения устройства?
- 25. Каковы различные способы вызова функции?
- 26. Каковы правильные способы перезагрузки gsp
- 27. Каковы различные способы замены курсора?
- 28. Каковы различные способы анализа данных
- 29. Каковы некоторые способы тестирования архитектуры?
- 30. Каковы способы запроса вложенной таблицы?
Err, да, это именно то, что нужно: вы применяете изменения до тех пор, пока код не будет компилироваться снова, вы запускаете тесты, и если они все равно пройдут, то вы не нарушили ожидаемое поведение класса, делая все эти изменения. Вы можете прокомментировать некоторые тела методов и сделать тесты пройденными один за другим, если хотите. Но тогда хорошо, что тесты, проверяющие вымощенные тела методов, терпят неудачу, не так ли? –
«... весь код в методах разбивается, и каждый должен будет изменить их все ...», если ваши классы являются разумными и делают только одно, это не должно быть проблемой. Если вы делаете слишком много занятий, вы должны исправить это в первую очередь. – PeeHaa
Хорошо, я просто подумал, что было бы лучше «всегда» иметь код для компиляции и проверки одного теста за другим. Очевидно, если я сначала нарушу код, а затем изменим код до тех пор, пока он не скомпилируется (это я предпочел скорее делать в меньших частях), я могу проверить тесты, и если они преуспеют, все будет в порядке. – user1304680