오전 회의에선 지금 프로그램에서 더 추가할 기능에 대해 회의를 나눴으나, 지금 프로그램은 전혀 객체지향적이 아니라고 판단해서 리펙토링 위주로 작업을 진행하기로 결정했다.
먼저 기능은 10가지 정도되는데, 구현체를 제외하고 class 파일이 3개뿐이 없어서 각 클래스 파일이 너무 많은 책임을 가지고 있다고 판단했고, 책임을 덜기 위해 목적이 비슷한 메소드끼리 묶기로 결정했다. 또한 자바의 꽃인 인터페이스를 이용하기 위해서 구현체인 student, subject의 공통점을 모아서 인터페이스 혹은 상위 클래스화 하기로 했따.
그 전, 팀원중 한명의 인텔리제이에서 문제가 발생해서 같이 해결을 해주려다가 iml파일의 역할을 알게 되었다. 이 파일 때문에 각자 설정이 출동해서 오류가 발생할 수 있고, 이 파일이 없으면 컴파일도 안되는것을 알게되어서 gitignore을 이용해서 iml을 제외하고 push하는 법을 배워서 사용했다.
이후 리펙토링을 하기 전 예외 처리 방식의 통일이 필요함을 느꼈다. 나의 경우 모든 예외를 throws해서 강제 종료한 반면, 다른 팀원들을 try-catch를 사용해서 프로그램 실행을 유지했다. 후자의 방법이 더 좋다고 판단해서 내 에러를 모두 try-catch를 사용하는 방식으로 교체하는 작업을 진행했다.
예외처리 통일 후 인터페이스 혹은 상위 클래스화를 하려고 했으나, 각 구현체의 공톰점이 사실상 의미 없는 수준이라 이는 진행하지 않았다.
이후 큰 클래스 파일을 세분화 하는 작업을 진행했는데, 기존의 파일에선, 예를 들면 StudentMenegement, UI출력과 데이터 입력, 데이터 수정 및 삭제, 예외처리 까지 모두 구현되어 있었다. 목적이 같다는 공통점으로 하나의 class에 작성했기 때문에 이를 3개의 목적으로 세분화 하고, 하나의 패키지로 묶는 방법으로 결정했다.
각 view, update, check로 나눠서 view는 UI 출력 메소드, update는 입력, 수정, 삭제, check는 예외처리 메소드를 위치 시켰다.
이후 각 패키지 안에는 view, update, check로 분리된 클래스들이 존재하게 되었고, 여기서 최대한 공통점을 찾아서 interface로 구현을 해볼까 생각중이다.