오전에 어제 PR이후 발생한 자잘한 오류들을 수정하고 각자 구현한 기능에서 수정했으면 좋겠는 부분을 나눈후, 담당한 기능을 수정했다.
나의 경우 출력시 등록 순서가 의미 없다고 생각해서 keySet()으로 키를 받고 바로 출력을 진행했는데, 오름차순으로 정렬해서 출력했으면 좋겠다는 의견에 따라 Set -> List -> sort -> 출력의 과정을 추가했다.
이후 모두가 인지하기 좋도록 클래스명을 통일, 수정했고, 4명중 2명은 추가 요구사항 추가, 2명은 아직 완성 못한 기능을 완성하는 과정으로 진행했다.
나의 경우 추가 요구사항을 구현하는 팀이였는데, 수강생에 Status 필드와 관련 기능을 추가하는 것과, 수강생 정보 수정, 삭제, 상태별 조회 기능을 구현하는걸 담당했다.
필드 추가와 더불어 get, set을 통해 구현을 하는 것을 어렵지 않았으나, 하나의 파일에 모든 기능이 들어가있는건 수정해야한다고 생각했다.
이후 각자 담당한 파트 개발이 종료되고, 파일을 분리해야한다고 의견을 제시했고, 모두가 동의해서 일단 크게 3개의 파일로 분리했다. 메인 페이지를 출력하고 각 페이지를 호출하는 클래스, 수강생 관련 클래스, 점수 관련 클래스로 분리를 했다. 이 과정에서 각 메소드의 응집도와 결합도의 수준이 크게 작용을 하는데 각자 메소드를 중심으로 개발을 해서 인지 결합도는 낮고 응집도는 높아서 클래스 분리는 쉽게 이루어졌다.
이후 각자 개인 스케줄로 인해 같이 개발을 하는 시간은 종료되었고, 나의 경우 각 메소드마다 중복되는 코드를 메소드로 추출해서 리펙토링을 조금 진행했다.
현재 Student, Score, Subject 클래스를 통해서 인스턴스를 생성하고있는데, 이 3개의 클래스의 공통점을 찾아서 인터페이스화 하거나 부모 클래스를 만들어서 상속하는 과정을 추가해도 좋을거 같다.