У меня есть класс Java TestExecutor, который отвечает за starting
тест. Запуск теста включает в себя ряд этапов:Хороший пример объектно-ориентированного проектирования в Java
- Update test repository
- Locate the test script
- Create result empty directory
- Execute command
- Parse output
- Update database
Для каждого из этих этапов я создал частные методы в классе TestExecutor, которые выполняют каждую из указанных выше действий, все окруженное в примерочных поймать блок. Я знаю, что это не очень хороший дизайн, так как мой класс слишком много, и это также боль для модульного теста из-за большого количества функций, скрытых в частных методах.
Я хотел бы услышать ваши предложения по рефакторингу этого класса, так как я не уверен, как уйти от чего-то подобного вышеуказанной структуре. Пример кода ниже:
public void start() throws TestExecuteException {
try {
updateRepository();
locateScript();
createResultDirectory();
executeCommand();
parseOutput();
updateDatabase();
catch(a,b,c) {
}
}
private updateRepository() {
// Code here
}
// And repeat for other functions
Почему ваши методы не являются публичными? Нет никакой проблемы при наличии нескольких методов в одном классе, если класс несет одну ответственность. – underdog
Нет причин для того, чтобы методы вызывались чем-либо внешним для TestExecutor, поэтому я решил сделать их частными. Моя проблема заключается в том, что класс несет общую ответственность (выполнение теста), однако под ним есть несколько обязанностей (обновить реестр, найти скрипт и т. Д.) – Adam
@Adam Просьба получить ответы, которые были предоставлены вам, и прокомментировать дальнейшие разъяснения , Если какой-либо из ответов был полезен, вы можете повысить их. Вы также можете принять ответ, нажав галочку рядом с ответом, который был наиболее полезным. Пожалуйста, прочитайте [Что делать, если кто-то отвечает на мой вопрос] (http://stackoverflow.com/help/someone-answers). Голосование бесплатное. Это ничего не стоит. Принятие ответа дает вам +2 репутации. Так что не стесняйтесь. Иди вперед и заплати! – CKing