Angular - Как минимизировать использование одного и того же кода? - PullRequest
0 голосов
/ 27 мая 2020

Я не уверен, как лучше обрабатывать и изменять приведенную ниже реализацию.

У меня есть два метода подписки, которые повторно назначают значение, как показано ниже.

public patientLastStatus = "";

this.treatmentStageOne.subscribe(resp => {
      if (resp) {
        this.patientLastStatus = "Passed";
      }
    });
this.treatmentStageTwo.subscribe(resp => {
      if (resp) {
        this.patientLastStatus = "Still in Observation";
      }
    });

Я понимаю, Выше представлены совершенно две разные подписки. Здесь только повторно назначается значение this.patientLastStatus. но я не понимаю, на каком основании Sonarqube показывает мне, например, Обновить или реорганизовать эту функцию, чтобы ее реализация не дублировала ту, что в строке 88.

Как это изменить лучше путь?

Очень полезен

Всем спасибо.

Ответы [ 2 ]

4 голосов
/ 27 мая 2020

Вы можете извлечь этот logi c в функцию более высокого порядка, которая принимает новое значение присваивания:

const conditionalChange = newValue => 
  resp => {
    if (resp) {
      this.patientLastStatus = newValue;
    }
  }

Теперь вы можете просто повторно использовать его в обеих подписках, не дублируя код:

this.treatmentStageOne.subscribe(conditionalChange("Passed"));
this.treatmentStageTwo.subscribe(conditionalChange("Still in Observation"));
2 голосов
/ 27 мая 2020

Sonarqube выдает предупреждение, потому что он видит дублирование. Попробуйте this.patientLastStatus обновить с помощью метода.

public patientLastStatus = "";

public updatePateintStatus = (status)=>{
   this.patientLastStatus = status;
}
this.treatmentStageOne.subscribe(resp => {
      if (resp) {
        this.updatePateintStatus("Passed");
      }
    });
this.treatmentStageTwo.subscribe(resp => {
      if (resp) {
        this.updatePateintStatus("Still in observations...");
      }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...