angular - 如何解决声纳问题“更新或重构此功能,使其实现不会重复第 xxx 行的那个”
问题描述
SonarQube 在某些特定行中将这 4 个函数标识为重复项:
- beneficiaires.forEach(beneficiaire => {
- () => {
这是我的功能:
affectPercentageToBeneficiares(beneficiaires: BeneficiaryData[], sum: number) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100.02 - sum) / numberOfBeneficiaresWithEmptyPrecentage;
beneficiaires.forEach(beneficiaire => {
if (beneficiaire.percentage == "") {
valueToAffecte = Math.round(valueToAffecte * 100) / 100;
beneficiaire.percentage = "" + valueToAffecte;
}
})
}
affectPercentageToBeneficiaresInZeroCase(beneficiaires: BeneficiaryData[]) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100) / numberOfBeneficiaresWithEmptyPrecentage;
beneficiaires.forEach(beneficiaire => {
if (beneficiaire.percentage == "") {
valueToAffecte = Math.round(valueToAffecte * 100) / 100;
beneficiaire.percentage = "" + valueToAffecte;
}
});
}
this.userProfilService.updateUser(this.UpdatedUser)
.subscribe(
() => {
this.toastr.success('User has been updated successfully', null, {
enableHtml: true,
});
},
(err) => {
this.toastr.error('erreur dans la modification utilisateur', null, {
enableHtml: true,
});
}
);
this.userProfilService.addUser(this.User)
.subscribe(
() => {
this.toastr.success('User has been created', null, {
enableHtml: true,
});
},
(err) => {
throw err;
}
);
有没有解决方案可以解决前两个函数的问题,而不必将它们合并为一个函数?
谢谢
解决方案
您不必合并函数,问题是您在两个地方(forEach
回调)具有完全相同的函数。将受益人的更新放入它自己的函数或方法中,并从两个地方调用它:
// Outside the class
function updateBeneficiaires(beneficiaires, valueToAffecte) {
beneficiaires.forEach(beneficiaire => {
if (beneficiaire.percentage == "") {
valueToAffecte = Math.round(valueToAffecte * 100) / 100;
beneficiaire.percentage = "" + valueToAffecte;
}
});
}
// In the class
affectPercentageToBeneficiares(beneficiaires: BeneficiaryData[], sum: number) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100.02 - sum) / numberOfBeneficiaresWithEmptyPrecentage;
updateBeneficiaires(beneficiaires, valueToAffecte);
}
affectPercentageToBeneficiaresInZeroCase(beneficiaires: BeneficiaryData[]) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100) / numberOfBeneficiaresWithEmptyPrecentage;
updateBeneficiaires(beneficiaires, valueToAffecte);
}
(或将其设为类方法,但它不使用任何类状态,因此可能是私有静态。)
推荐阅读
- python - 刽子手替换字符逻辑
- ffmpeg - 从 DV AVI 中提取帧时间码
- php - 如何在两个函数中获取相同的 URL 参数?
- java - 实现者迭代器
- android - 将 Wifi 打印机添加到 React Native
- sql - 在删除级联 phpMyAdmin 上添加外键不起作用
- salesforce - Twilio Studio - 销售人员
- javascript - 如何使用 JavaScript 将下载内容附加到电子邮件
- elasticsearch - 从 elasticsearch 集群获取数据需要哪些详细信息?
- apache-nifi - Apache Nifi - 如何在 ConvertJSONToSQL 中使用 JSON 的属性?