我正在与rest服务一起编写一个rest控制器,它将使用遗留代码,该遗留代码仍在应用程序的不同位置使用。其目的是导出Excel文件。 为了使代码更简洁(在这种情况下尽可能干净,我不想重新编写整个应用程序)并简化单元测试,我在进行一些重构。
因此,假设我有一个方法,该方法使用基于过滤器(输入)的参数调用许多服务,然后使用它生成excel文件。有什么好的清洁方法?
我将感谢一些提示和技巧,以及很好的讨论;)
@Override
public Downloadable<Workbook> getExcel(ExcelFilterTO filter) {
List<String> someList= someService.getString(filter.getParam1(), filter.getParam2()).stream().collect(toList());
List<Integer> someList2 = someService.getInt(filter.getParam1(), filter.getParam2(), filter.getParam3(), filter.getParam4());
TranslationSet translationsSet = translationService.getTranslationsSet(filter.getParam4(),
TranslationsGroup.SOME_TYPE);
SomeClass classObject = someService.doSomething(filter.getParam1());
...
...
String fileSuffix = ExcelUtils.EXCEL_EXPORT_FILE_NAME_SUFFIX;
ResourceBundle resourceBundle = ResourceBundle .getBundle(BundleNames.getBundle(filter.getParam2()).getName());
Workbook workbook = excelExport.exportExcel(someList, someList2 , fileSuffix, translationsSet, filter.getParam3());
String fileName = excelExport.getExcelFileName(resourceBundle, someList3, filter.param6(), classObject);
return new DownloadableResource<>(fileName, XLS.getContentType(), workbook);
}`
答案 0 :(得分:-1)
我猜您可以将所有List<Sting>
对象用逗号括起来并在前面的行中对其进行初始化。例如List<String> obj1, obj2, obj3, ...;
答案 1 :(得分:-1)
您可以通过添加实用程序方法来缩短初始化时间,但我想这只是一个问题。
// utility method
List<Integer> intList(Supplier<String> param1, Supplier<String> param2) {
return someService.getString(param1.apply(filter), param2.apply(filter)).stream().collect(toList());
}
和
// utility method
List<String> stringList(Supplier<String> param1, Supplier<String> param2) {
return someService.getString(filter.getParam1(), filter.getParam2()).stream().collect(toList());
}
所以你可以拥有
List<Integer> someList2 = intList(filter::getParam1, filter::getParam2);
List<Integer> someList4 = intList(filter::getParam4, filter::getParam3);
和
List<String> someList = stringList(filter::getParam1, filter::getParam2);
List<String> someList3 = stringList(filter::getparam6, filter::getParam5);
在您的构造函数中。