TIL #15 '캠프 관리 프로그램' 프로젝트 KPT 회고

HYEON JIN CHOI·2024년 5월 11일

Project: 캠프 관리 프로그램

내일배움캠프의 스프링 수강생들을 관리하는 프로그램

캠프 관리 프로그램 프로젝트는 Java의 역량 강화팀 협업을 목표로 진행되었다.
프로젝트 초기에 일정이 원활하게 진행되지 못해, 시간이 촉박하게 되자 기능 구현에 급급하게 되었다.
결과적으로 기능 구현은 어느 정도 완료되었지만, 설계 측면에서는 아쉬움이 남았다.
프로젝트는 이제 마무리되었지만, 이 경험이 추후 다른 프로젝트에 도움이 될 수 있도록
잘한 점과 개선이 필요한 부분을 구체적으로 분석하는 것이 중요하다.
다음은 이번 프로젝트에 대한 KPT 회고이다.

KPT 회고

  • Keep (현재 잘 진행 되고 있고, 계속 했으면 좋겠는 것)
  • Problem (불편하게 느끼며, 개선이 필요하다 느끼는 것)
  • Try (Problem에 대한 문제 개선, 당장 실행 가능 한 것)

Keep

  1. 입력값 검증
    입력값이 유효하지 않을 때 이를 적절히 처리하는 로직을 구현했다. 이는 시스템의 안정성과 사용자 경험 향상에 기여하기에 이러한 개발습관은 지속적으로 유지하고 발전시켜 나가야 한다.

  2. 적절한 예외 처리
    프로젝트에서 예외 처리를 통해 불필요한 입력은 조건문으로 필터링하고, 예상치 못한 상황에서는 체계적인 예외 처리를 적용함으로써 시스템의 안정성을 유지하였다.

  3. 명확한 변수명 사용
    변수명을 직관적이고 이해하기 쉽게 작성함으로써 코드의 가독성과 유지보수성이 향상되었다. 명확한 명명 규칙은 팀 내 커뮤니케이션을 강화하고 새로운 팀원이 코드를 이해하기 쉽게 만들기 때문에 계속해서 이러한 관행을 유지하는 것이 중요하다.

  4. 효율적인 PR 운영
    Pull Request를 생성 후 하나의 브랜치에 머지하는 과정이 잘 운영되었다. 이 과정에서 코드 리뷰와 품질 관리를 강화하며, 에러의 조기 발견과 수정을 가능하게 한다. 이러한 절차를 계속해서 체계적으로 실행하면 프로젝트의 성공 확률을 높일 수 있다.

  5. Git 컨벤션의 준수
    Git 커밋 메시지와 관리 방식에 일관된 컨벤션을 적용했다. 이는 변경 사항 추적과 이력 관리를 용이하게 하며, 협업 시에도 큰 도움이 된다. 프로젝트의 투명성과 추적 가능성을 높이는 이 관행은 앞으로도 계속 유지되어야 한다.

Problem

  1. 과중한 클래스 설계
    CampManagementApplication 클래스에 과도하게 많은 메서드가 집중되어 있어, 클래스의 단일 책임 원칙이 침해되고 있다. 이로 인해 클래스의 복잡성이 증가하며, 유지보수와 확장성이 저하되므로 적절한 분리와 모듈화가 필요하다.

  2. 부적절한 변수명과 Enum 사용의 부재
    boolean 타입 변수의 경우, is나 has와 같은 접두어를 사용하여 변수의 역할이 명확히 드러나도록 해야 한다. 이는 코드의 명확성을 높여줄 뿐만 아니라, 다른 개발자들이 코드를 더 쉽게 이해할 수 있게 한다. 또한 현재 여러 타입을 단순 문자열이나 정수로 관리하고 있는데, 이를 enum으로 리팩토링하면 타입 안전성을 높이고, 코드의 가독성 및 유지보수성을 개선할 수 있다.

  3. 매직 넘버 사용
    코드 내에서 매직 넘버를 사용하고 있어 이 값들이 무엇을 의미하는지 즉시 파악하기 어렵다. 이러한 값들을 명확하게 정의된 상수로 대체하여 코드의 의미를 명확히 하고, 오류 가능성을 줄이는 것이 좋다.

  4. 불필요한 else 사용
    현재 else if 구문에서 else가 필요 없는 상황임에도 불구하고 사용되고 있어 코드의 가독성을 저하시키고 있다. 불필요한 else를 제거하여 구조를 간결하게 하면 코드 이해가 쉬워진다.

  5. Git 브랜치 명명 규칙 개선
    브랜치 이름을 기능에 따라 명명하여 프로젝트의 관리와 추적을 용이하게 한다. 이는 팀원 간의 명확한 커뮤니케이션과 효율적인 작업 분배에 도움을 줄 것이다.

Try

  1. 과중한 클래스 설계 개선
    CampManagementApplication 클래스의 메서드들을 기능별로 나누어 별도의 클래스로 리팩토링할 수 있다. 예를 들어, 사용자 관리, 캠프 활동 관리 등의 기능을 분리하여 각각의 클래스에 책임을 할당함으로써 코드의 가독성과 유지보수성을 향상시킬 수 있다.

  2. 명확한 변수명과 Enum 사용 도입
    boolean 타입의 변수명에는 is나 has와 같은 접두어를 추가하여 역할을 명확하게 한다. 또한, 문자열이나 정수로 관리되고 있는 타입을 enum으로 리팩토링하여 코드의 가독성과 타입 안전성을 높일 수 있다.

  3. 매직 넘버 제거
    코드 내 매직 넘버를 명확하게 정의된 상수로 대체한다. 예를 들어, 특정 상태 코드나 설정 값들을 상수로 선언하고, 이를 코드 전반에 걸쳐 사용하여 코드의 의미를 명확히 하고, 오류 가능성을 줄일 수 있다.

  4. 불필요한 else 제거
    else if 구문에서 else가 필요 없는 경우, else 부분을 제거하여 코드의 가독성을 향상시키고, 로직의 명확성을 증가시킬 수 있다. 이는 코드의 간결성을 높이고, 오류 발생 가능성을 줄이는 데 도움이 된다.

  5. Git 브랜치 명명 규칙 개선
    기능에 기반한 브랜치 명명 규칙을 도입하여, 팀원 간의 커뮤니케이션과 프로젝트의 관리를 향상시킨다. 예를 들어, 기능의 이름을 반영한 브랜치 명을 사용하여, 브랜치의 목적을 쉽게 파악하고 관련 작업을 적절하게 할당할 수 있다.

0개의 댓글