James Delaney
James Delaney

Reputation: 1776

How to refactoring my if/else part of method, to avoid duplication of code?

I have IF and Else condition in method, and in both case I need to call: "this.replaceSelectedText(link);". Qustion is: "How I can solve this by calling only one time this.replaceSelectedText(link); ?
Here is part of method, which should be refactored. This code is called on two place.

`
   // save data for text editor link
    else {
      let link = "";
      let pcTags = this.hyperlinkData.tags ?       
      tags='${this.hyperlinkData.tags}'` : "";
        if(this.isHyperlink) {
          let target = this.selectedTargets.currentWindow;
           if(this.hyperlinkData.target && this.hyperlinkData.target !== 
             this. targets[0]) {
             target = this.selectedTargets.newWindow;
        }
        link = `<a href='${this.hyperlinkData.url ? this.hyperlinkData.url: ""}' target='${target}' title='${this.hyperlinkData.tooltip ? this.hyperlinkData.tooltip : ""}' ${pcTags}>${this.hyperlinkData.linkText}</a>`;
        this.replaceSelectedText(link);
      }
      else {
        link = `<a href='mailto:${this.mailToLinkData.address ? this.mailToLinkData.address : ""}?Subject=${this.mailToLinkData.subject ? this.mailToLinkData.subject : ""}' ${pcTags}>${this.mailToLinkData.linkText}</a>`;
        this.replaceSelectedText(link);
      }
}
`

Here is Screenshot of under method and part of code about I am talking.

Upvotes: 1

Views: 63

Answers (1)

amal
amal

Reputation: 3170

Can't you do this,

// save data for text editor link
        else {
          let link = "";
          let pcTags = this.hyperlinkData.tags ?       
          tags='${this.hyperlinkData.tags}'` : "";
            if(this.isHyperlink) {
              let target = this.selectedTargets.currentWindow;
               if(this.hyperlinkData.target && this.hyperlinkData.target !== 
                 this. targets[0]) {
                 target = this.selectedTargets.newWindow;
            }
            link = `<a href='${this.hyperlinkData.url ? this.hyperlinkData.url: ""}' target='${target}' title='${this.hyperlinkData.tooltip ? this.hyperlinkData.tooltip : ""}' ${pcTags}>${this.hyperlinkData.linkText}</a>`;
          }
          else {
            link = `<a href='mailto:${this.mailToLinkData.address ? this.mailToLinkData.address : ""}?Subject=${this.mailToLinkData.subject ? this.mailToLinkData.subject : ""}' ${pcTags}>${this.mailToLinkData.linkText}</a>`;
          }
     this.replaceSelectedText(link);
    }

Upvotes: 1

Related Questions