Ake*_*Jha 3 java cyclomatic-complexity sonarqube
我有以下代码:
private Facility updateFacility(Facility newFacility, Facility oldFacility) {
if (newFacility.getCity() != null)
oldFacility.setCity(newFacility.getCity());
if (newFacility.getContactEmail() != null)
oldFacility.setContactEmail(newFacility.getContactEmail());
if (newFacility.getContactFax() != null)
oldFacility.setContactFax(newFacility.getContactFax());
if (newFacility.getContactName() != null)
oldFacility.setContactName(newFacility.getContactName());
// ......
}
Run Code Online (Sandbox Code Playgroud)
大约有 14 个这样的检查和分配。也就是说,除了少数,我需要修改 oldFacility 对象的所有字段。我得到了这个代码 14 的圈复杂度,根据 SonarQube,这是“授权大于 10”。关于如何降低圈复杂度的任何想法?
在您的程序中的某个时刻,您必须实现以下逻辑:
无需全局查看您的项目,您可以做的是将该逻辑移动到每个属性的 setter 中:
public class Facility {
public void setSomething(String something) {
if (something != null) {
this.something = something;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您的update方法就是:
private Facility updateFacility(Facility newFacility, Facility oldFacility) {
oldFacility.setSomething(newFacility.getSomething());
// etc for the rest
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9429 次 |
| 最近记录: |