Как выстроить структуру классов?

277
14 ноября 2021, 03:10

Дорый день! У меня есть тестовое задание. Кейс сбора данных:

  • Собираем в "Все" записи в которых есть Номер в ЕИС
  • получаем из них сумму
  • В консоль выводим значения в котором пишем кол-во лотов и их сумму
  • создаем файл с текстом полученного результата.

Данные спарсил с помощью selenide(selenium).
Подскажите какую структуру(архитектуру) классов применить ? Проект java. https://github.com/genabitgit/ParseData
Сейчас структура такая:

public class Main {
public static void main(String[] args) throws IOException {
    ExcelDataConfig excelDataConfig = new ExcelDataConfig();
    SetUpBrowser browser = new SetUpBrowser();
    String startDataFrom = excelDataConfig.getData(0, 0);
    String startDataTo = excelDataConfig.getData(0, 1);
    String endDataFrom = excelDataConfig.getData(1, 0);
    String endDataTo = excelDataConfig.getData(1, 1);
    browser.startBrowser();
    var searchPage = browser.openSearchPage();
    //submit search request
    searchPage.entersTheStartDateOfPublication(startDataFrom, startDataTo);
    searchPage.entersTheEndDateOfPublication(endDataFrom, endDataTo);
    searchPage.pressShowButton();
    searchPage.pressAllButton();
    searchPage.pressDisplayTypeRow();
    //store results
    var pagesCount = searchPage.getPagesCount();
    for (int i = 2; i < pagesCount; i++) {
        var result = searchPage.showResultsPage(i);
    }
    searchPage.saveReport();
}
}
Answer 1

В твоём случае ExcelDataConfig и SetUpBrowser могут иметь статические методы и экземпляры создавать вообще не надо.

Вот если, например ты в них будешь передавать какое-то состояние, например, путь к файлу настроек и URL страницы, то твой подход имеет смысл.

И мне не нравится SearchPage - ты нигде не используешь url. По-идее, методы этого класса тоже можно сделать статическими и обращаться напрямую, например: SearchPage.pressAllButton();

Ещё. SetUpBrowser и SearchPage возможно стоит объединить вместе. Например, как SearchPage. Этот код будет статическим блоком:

static {
   Configuration.browser = "firefox";
   Configuration.startMaximized = true;
   clearBrowserCache();
}

Ещё. В пакетах не принято использовать большие буквы. Например, config, page, report.

Вообще, в рамках такого проекта об архитектуре можно сильно не грустить.

READ ALSO
return пустой массив

return пустой массив

Как вернуть пустой массив в методе?

75
Ограничение записи массива в массив

Ограничение записи массива в массив

Пришлось немного подхимичить код чтобы при загрузке на сайт универа не одинаков былВ общем где тут дописать чтобы при двух массивах с одним...

114
Можно ли как-то поместить иконки в jar, чтобы было проще его передать на другой компьютер?

Можно ли как-то поместить иконки в jar, чтобы было проще его передать на другой компьютер?

У меня Maven-проектЯ положила иконки в папку src\main\resources, прописала такие же пути к ним, но созданный jar-архив их не видит

84
Как включить CORS или OPTIONS метод в AWS Lambda Function Handler без API Gateway в коде?

Как включить CORS или OPTIONS метод в AWS Lambda Function Handler без API Gateway в коде?

У меня есть метод lambda на JAVAКогда я посылаю запрос методом OPTIONS, я поучаю {"message":"Missing Authentication Token"}

104