다음 C 함수의 응집도 유형과 이를 개선하기 위한 리팩토링 기법으로 가… | [경찰간부후보생 소프트웨어공학] 26년 1회차 기출문제 상세 페이지
1[경찰간부후보생 소프트웨어공학] 26년 1회차
다음 C 함수의 응집도 유형과 이를 개선하기 위한 리팩토링 기법으로 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
| int Calc(int type, int n) { switch (type) { case 1: return n * 200; // 미성년 공제 case 2: return n * 150; // 경로 공제 ··· case 9: return n * 10; // 일반 공제 } return 0; } |
1
기능적 응집 - 메소드 추출
2
논리적 응집 - 조건문을 다형성으로 대체
3
순차적 응집 - 클래스 추출
4
우연적 응집 - 매직 넘버의 상수화
해설
type 값에 따라 성격이 비슷한 여러 처리를 한 함수에 몰아넣은 구조는 논리적 응집이며, 이는 조건문을 다형성으로 대체하는 리팩토링으로 개선한다.
공제 유형별로 클래스를 나누고 공통 메소드를 재정의하게 하면 switch 분기가 사라지고 유형 추가 시 기존 코드를 고치지 않아도 된다.
- 기능적 응집은 하나의 기능에 필요한 요소만 모인 경우로, 여러 공제 계산이 분기로 섞인 이 함수에 해당하지 않는다.
- 순차적 응집은 한 처리의 출력이 다음 처리의 입력이 되는 관계인데, 이 함수의 분기들은 서로 데이터를 주고받지 않는다.
- 우연적 응집은 아무 관련 없는 요소가 묶인 경우인데, 이 함수의 분기들은 모두 공제 계산이라는 같은 범주에 속한다.
오류나 개정된 내용이 보이면 알려주세요