我没有找到适合我的问题的解决方案。据我所知,返回 null 不是编写干净代码的好方法,正如《清洁代码》一书所说。然而,关于这种做法有很多不同的看法,我不确定哪一个适合我的职能。
private EArea getSimilarExistingArea(EImportArea importedArea) {
for (EArea existingArea : exsitingAreas) {
EList<EPoint> importedAreaPoints = importedArea.getPoly().getPoints();
EList<EPoint> existingAreaPoints = existingArea.getPoly().getPoints();
for (EPoint importedAreaPoint : importedAreaPoints) {
for (EPoint existingAreaPoint : existingAreaPoints) {
if (importedAreaPoint.equals(existingAreaPoint))
return existingArea;
}
}
}
return null;
}
如果没有现有的类似区域,我应该返回什么?
PD:为了优化我的代码,如果建立了现有区域,我将用返回来打破循环。
你应该看看可选类!
使您的方法返回类型Optional<EArea>
并简单地返回Optional.ofNullable(existingArea)
您将不得不稍微修改代码,但 Optional 的好处真的很值得!
最后我使用可选类来解决我的问题。
这是代码:
private Optional<EArea> getSimilarExistingArea(EImportArea importedArea) {
for (EArea existingArea : baseLineService.getBaseLine().getAreas()) {
EList<EPoint> importedAreaPoints = importedArea.getPoly().getPoints();
EList<EPoint> existingAreaPoints = existingArea.getPoly().getPoints();
for (EPoint importedAreaPoint : importedAreaPoints) {
for (EPoint existingAreaPoint : existingAreaPoints) {
if (importedAreaPoint.equals(existingAreaPoint))
return Optional.of(existingArea);
}
}
}
return Optional.empty();
}
这是我检查返回值的方法:
if (getSimilarExistingArea(importedArea).isPresent())