코드카타 진행 이후 오늘은 프로젝트의 리팩토링 과정에 시간을 쏟았습니다.
현재 Main함수의 기능을 하는 CampManagementApplication.java 파일에 기능이 몰려있는 상황입니다.
따라서 튜터님의 조언은 현재의 구현방식은 절차지향적인 프로그래밍 방식에 가깝고 객체지향적인 프로그래밍으로
진행해보는 경험을 하라 였습니다.
조언을 듣고 저는 기존에 MVC 패턴에 대해 학습한 경험이 있었기 때문에 바로 MVC 패턴과 DAO 그리고
VO, DTO, POJO, BEAN 의 개념이 떠올랐습니다.
애초에 프로젝트의 초안을 만들어 주셨을 때 MVC 패턴을 염두에 둔 것이 아닐까 생각이 들었습니다.
바로 파일 명의 model 과 CampManagementApplication.java 파일의 ~~~View() 함수들
그렇다면 남은것은 Controller입니다, 팀이 해야 할 일은 View의 역할을 하는 CampManagementApplication.java
파일의 코드에서 Controller를 분리해내는 것입니다.
여기에 객체지향적인 방법으로 해보고자 리팩토링의 1단계로 시도한게 DAO 입니다.
분리한 파일 구조입니다.
간략한 설명을 드립니다, DAO는 Data Access Object 라고 하며
원래는 JDBC 와 같은 API를 사용하여 DB와 연결을 하고 view에서 전달받은 정보를 가지고 DB와 통신하며
데이터를 처리하는 역할을 담당하는 클래스입니다,
하지만 저희의 이번 프로젝트에서는 DB의 사용이 없기 때문에 각 Model의 DAO를 두고
각각의 DAO가 데이터를 담을 Collection 객체를 보유하며 그것에 대한 CRUD 및 데이터 처리를 해주는 메소드를
보유하는것입니다, 이렇게하면 View함수에서는 각각의 DAO 인스턴스들을 생성해주고
입력받은 정보를 토대로 그에 맞는 데이터 처리를 진행해주는것입니다.
Interface를 둔 이유는 프로젝트 조건에 주어진 구현사항들에 공통점이 있었기 때문입니다.
대략적으로 CRUD와 유사한 기능들이 공통되는 부분이 있었고
이부분에 대하여 간략한 Inteface를 구현하여 추후 다뤄야 할 데이터 모델이 추가되거나 변경될 경우
더욱 유지보수가 쉬워질 수 있도록 하였습니다.
하지만 오늘 리팩토링 과정에서 문제가 발생했습니다.
사전에 충분한 모델 설정 및 논의를 거치지 않고 바로 분업 및 코드 작성 그리고
구현사항 달성을 위주로 구현에 집중한 코드를 작성하여
공통된 기능은 수행하지만, 그것의 구현 방식이 제각각이라 Interface에 맞춰
다형성을 구현하게 리팩토링하는 과정이 너무나 복잡해진상태였습니다, 그렇기때문에 오늘 하루의 대부분의
시간을 소모해버렸고, 현재 리팩토링의 1차 마무리 단계로
StudentDAO의 리팩토링과 ScoreDAO의 약 30퍼센트 정도의 리팩토링을 하고
실행 테스트로 StudentDAO의 정상동작 확인과 ScoreDAO의 동작에러 상황으로 마무리를 지었습니다.
'부트캠프 > TIL' 카테고리의 다른 글
[부트캠프] TIL = HashMap, Map, static 제어자 (0) | 2024.08.08 |
---|---|
[부트캠프] TIL - 리팩토링 마무리 (0) | 2024.08.07 |
[부트캠프] TIL - 람다식, 익명 이너 클래스 (0) | 2024.08.05 |
[부트캠프] TIL - 함수형 프로그래밍, Java8 (0) | 2024.08.04 |
[부트캠프] TIL - 팀프로젝트 2일차 회고 Git conflict (0) | 2024.08.03 |