ex) Student 클래스
public class Student {
public void getCourses() {...} // 수강 과목 조회
public void addCourses(Course c) {...} // 수강 과목 저장
...
public void save() {...} // 데이터베이스 객체 정보 저장
public Student load() {...} // 데이터베이스 객체 정보 조회
public void printOnReportCard() {...} // 성적표 출력
public void printOnAttendanceBook() {...} // 출석부 출력
}
좋은 설계란 기본적으로 시스템에 새로운 요구사항이나 변경이 있을 때 가능한 한 영향 받는 부분을 줄여야 함
어떤 클래스가 잘 설계되었는지를 판단하는 척도는 "언제 변경되었는가?"
데이터베이스의 스키마가 변경된다면 Student 클래스도 변경되어야 하는가?
학생이 지도 교수를 찾는 기능이 추가되어야 한다면 Student 클래스는 영향을 받는가?
학생 정보를 성적표와 출석부 이외의 형식으로 출력해야 한다면 어떻게 해야 하는가?
책임이 많이 질수록 클래스 내부에서 서로 다른 역할을 수행하는 코드끼리 강하게 결합될 가능성이 높아짐
A. Student 클래스에 변경사항이 생기면 Student 클래스를 사용하는 코드와 전혀 관계가 없더라도 직접 또는 간접적으로 사용하는 모든 코드를 다시 테스트해야 함
※ TIP
어떤 변화가 있을 때 해당 변화가 기존 시스템의 기능에 영향을 주는지 평가하는 테스트를회귀테스트
라 함
회귀테스트
- 시스템에 변경이 발생할 때 기존의 기능에 영향을 주는지를 평가하는 테스트
Reference