Есть приложение, состоящее из нескольких maven-modules. В каждом модуле есть Класс, который просто заполняет, хранит и в методах возвращает два List<>
. Эти List<>
похожи друг на друга, но отличаются тем, что в них хранится. Среда разработки определяет эти коллекции, как дубликат кода. Подскажите, как от этого избавиться. Вот пример такого класса:
public class ImageListCommandsAndOptions {
private List<OptionDescription> options = new ArrayList<>();
private List<CommandDescription> commands = new ArrayList<>();
private OptionDescription urlImage = new OptionDescription
("url", "u", "resource address on the Internet", true);
private OptionDescription dirImage = new OptionDescription
("dir", "d", "absolute path of saving file", true);
private OptionDescription nameImage = new OptionDescription
("name", "n", "name of image file", true);
private OptionDescription pathImage = new OptionDescription
("path", "p", "path of image", true);
private OptionDescription descriptionImage = new OptionDescription
("specification", "s", "image description", true);
private CommandDescription download = new CommandDescription("download", "d", "download image to file", new DownloadCommand(), urlImage, dirImage);
private CommandDescription help = new CommandDescription("help", "h", "help", new HelpCommand(commands));
private CommandDescription saveDb = new CommandDescription("save", "s", "save to database", new DatabaseSaveCommand(), nameImage, pathImage, descriptionImage);
private CommandDescription removeDb = new CommandDescription("remove", "r", "remove record from Database", new DatabaseDeleteCommand(), nameImage);
private CommandDescription viewDb = new CommandDescription("view", "v", "show position in the database", new DatabaseSearchCommand(), nameImage);
public List<OptionDescription> getImageOptions(){
options.add(urlImage);
options.add(dirImage);
options.add(nameImage);
options.add(pathImage);
options.add(descriptionImage);
return options;
}
public List<CommandDescription> getImageCommands(){
commands.add(download);
commands.add(help);
commands.add(saveDb);
commands.add(removeDb);
commands.add(viewDb);
return commands;
}}
В частности, в этом Классе, пятью элементами заполняется один List<>
и пятью элементами - второй. Это воспринимается, как дубликат кода.
Замечания среды разработки настраиваемые и не всегда справедливы к конкретной ситуации. Я бы на вашем месте не заморачивался именно с удалением дубликатов в данном случае. У вас тут другая проблема - нужно заполнять списки один раз, при создании ImageListCommandsAndOptions
, а то сейчас у вас при каждом вызове getImageOptions
будет вставка в список и после, например, трех вызовов этого метода ваш список будет состоять из 15 элементов, среди которых 3 одинаковых набора по 5 штук.
private final List<OptionDescription> options = Arrays.asList(urlImage, dirImage, nameImage, pathImage, descriptionImage);
private final List<CommandDescription> commands = Arrays.asList(download, help, saveDb, removeDb, viewDb);
public List<OptionDescription> getImageOptions(){
return options;
}
public List<CommandDescription> getImageCommands(){
return commands;
}
Как вариант, можно использовать Collections.addAll(collection, elements...)
, который позволяет в одну строку заполнить список:
public List<OptionDescription> getImageOptions(){
Collections.addAll(options, urlImage, dirImage, nameImage, pathImage, descriptionImage);
return options;
}
public List<CommandDescription> getImageCommands(){
Collections.addAll(commands, download, help, saveDb, removeDb, viewDb);
return commands;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Читаю книгу про компиляторы(книга дракона), разбираюсь как лексические и синтаксические анализаторы программируютсяВ конце книги есть пример...
Хочу импленментировать синхронизацию баз данных между удаленными машинамиВсе происходит так: embedded система собирает данные и при возможности...
Здравствуйте, постоянно получаю ошибку, когда пытаюсь добавить объекты на картуГугл мне не дал ясности, стек оверфлоу я тоже, не понял, что...