리팩토링: 재사용 가능한 함수를 위한 종속성 주입

// In this reusable View component,
// the context of its table
// is injectable with 
// context from elsewhere. 
// This means as a child
// View, others can inject
// the context.

 setTableData(context: any) {
  this.showTable = true;
  this.cdf.detectChanges();
  // Use the reusable function here
  funcSetTableData(
   context, // outside data
   this.paginator, // view 
   this.pageSize,  // number
   this filter,    // string
   this.sort,      // view
  );
  // Back to the view component here
}



재사용 가능한 함수는 4개의 "this"를 사용합니다. 가치. 그 중 두 개는 이 보기에 포함된 보기이고 다른 두 개는 각각 문자열 및 숫자 값입니다. 재사용 가능한 함수에 지역 값을 "주입"하고 있습니다.

이 View Component의 관점에서 이것은 긴밀한 결합입니다. 그러나 함수 자체는 매개변수가 어디에서 왔는지 상관하지 않습니다.

함수가 작동하려면 적절한 매개변수만 있으면 됩니다. 이것은 기능 자체가 밀접하게 결합되어 있지 않다는 것을 의미합니다.

이 함수를 재사용하는 또 다른 머티리얼 테이블 뷰를 생성하면 자체적으로 필요한 적절한 종속성을 주입합니다.

재사용성에 대해 생각하면서 가능한 리팩터링을 발견했을 때 funcSetTableData 함수를 만들었습니다. '이것'의 수. 매개변수도 단서였습니다.

우리가 그것을 함수 라이브러리로 옮기지 않았다면 그것은 이 보기에만 알려졌을 것입니다. 이것은 재사용을 생각하지 않는 "밀착 결합"의 잘못된 효과입니다.

좋은 웹페이지 즐겨찾기