当您使用
boolean
将方法标记为分支决策器(不是最佳术语),
实际上,您正在使用两种不同方法的功能,并将其分解为一种方法。
经常
更好的解决方案是有一种用于共享功能的方法和另一种用于超集功能的方法。
例如:
public DataImporter doYourCategoryStuff()
{
List<String> categories = getCategories();
... blah including the for loop.
return theDataImporter;
}
public void doAllTheStuffs()
{
final DataImporter theDataImporter;
theDataImporter.doYourCategorStuff();
populateImportedData(theDataImporter.importData());
}
编辑
代码中的更多内容。
在您的代码中,
布尔标志表示“我对子导入器做了一些事情,需要更新父导入器”。
在这种情况下,你是粉碎“确定事情更新”和“做更新”在一起;
把他们分开。
考虑以下情况:
Set<DataImporter> updateSet = new HashSet<>();
for (category for loop)
{
final DataImporter child = importer.getChild(category);
if (child != null)
{
updateSet.add(child);
updateSet.add(importer);
}
}
for (final DataImporter current : updateSet)
{
current.importData();
}
即使
add(importer)
(母公司)可能被多次呼叫,
集合将只包含每个的一个实例
DataImporter
.
这应该是合理的,即使你不执行
hashCode
和
equals
在…上
数据转换器
,因为父引用将始终相同。