본문 바로가기

개발 일지/TIL

[ #17 ] TIL

✏️ 0508      


팀과제

3시 보충반


 

팀 프로젝트

 

  • 맡은 역할
    • 특정 과목 회차별 등급 조회 (필수) ✔️
    • 상태별 수강생 조회 (추가) ✔️

 

이전에 만들었던 특정 과목의 회차별 등급을 조회할 때

과목 이름을 입력해서 하다보니 다른 팀원분이 index 번호로 바꿀 수 있냐고 물어보셔서

아무래도 다른 곳에선 index 값으로 받아서 처리하다 보니 공통적으로 맞추는게 좋을 것 같아서 바로 반영했다!

 

사실 처음부터 index로 하려고 했었는데 잘 안되가지고바꾼거였는데 다시 도전하게 되었다

 

// 변경 전
System.out.println("조회할 과목을 입력하세요(ex: Java, 객체지향, Spring ...): ");
String subjectName = sc.next();

// 변경 후
System.out.println("조회할 과목의 번호를 입력하세요: ");
int subjectIndex = sc.nextInt();
// 입력받은 과목 Index로 과목 ID 반환
Subject subject = student.getSubjectByIndex(subjectIndex);
if (subject == null) {
    System.out.println("해당 번호에 해당하는 과목을 찾을 수 없습니다.");
    return;
}

 

String 으로 과목 이름을 받았던 코드를 Index 를 받기 위해  int 로 변경

과목 이름을 받아서 고유 ID로 변환했던 코드도 약간 손봐서 변경했다

// 입력한 회차 점수 등록 여부 확인
if (!student.hasScoreTestCnt(subject.getSubjectId(), selectedTestCnt)) {
    System.out.println("해당 회차는 존재하지 않습니다");
    return;
}

 

수정하는 김에 조회하려는 회차에 점수가 등록되어 있는지에 대한 검사 코드도 추가했다

원래는 없었던 검사 코드인데 아래의 코드를 실행시켰을 때 문제점이 발생해서 변경했다

 

for (Score score : scores) {
    if (score.getTestCnt() == selectedTestCnt && subjectType!= null) {
        System.out.println(score.getTestCnt() + " 회차 => 등급: " + score.getGrade());
        return;
    } else {
    	System.out.println("해당 회차는 존재하지 않습니다");
        return;
    }
}

 

 코드 테스트를 진행했는데 1회차를 조회할 때는 문제 없었지만

그 외 2회, 3회차 등 회차가 올라가면 정상적으로 회차별 등급이 조회가 되지만

아래에 else 코드 쪽도 같이 실행되는 문제점을 발견했다

 

추가했던 이유는 회차 값을 잘 못 가져왔을 때의 값을 위해 넣어뒀었는데

정상적으로 반응하지 않는 걸 찾아냈다!

 

그래서 else 코드를 없애버리고

위쪽에서 먼저 검사 코드를 진행해서 판단하는 것으로 변경하게 되었다

 

 

현재 상황의 피드백 ver.튜터님

 

저녁 타임에 잠시 튜터님이 오셔서 깃허브에 올라간 코드를 보시고 피드백을 해주셨다

public static boolean validationTestCnt(int inputTestCnt) {
    if (0 >= inputTestCnt || inputTestCnt > 10){
        return false;
    }
    return true;
}

 

여기 코드에서 0이나 10은 점수 회차를 나타내는 숫자인데 이런 걸 안티 패턴이라고 말한다고 하신다!

이 코드를 처음 보는 사람들은 저 숫자들이 무엇을 나타내는지 모르거나 이해를 못할 수 있기 때문에

변하지 않는 값이니 상수를 이용해 변수명으로 표기하는 것을 권장한다고 하셨다

 

 

private String status;

 

현재 추가사항 중 학생의 상태를 문자열로 정의하고 있는데

해당 부분은 상수로 적용 가능하니 enum 으로 정의해보는 걸 말씀해주셨다!

안그래도 이부분은 상태별 조회를 생각하면서 배열이나 enum이 더 깔끔할 것 같다는 생각을 하긴 했다

 

 

여유가 되면 메서드 하나하나를 좀 작게 작성 (리팩토링)  패키지를 구분 하기

코드를 작게 작성하는 연습을 하기!

 

피드백 받은 내용은 내일 팀원들과 서로의 피드백을 이야기 하면서

반영해보기로 했다!

'개발 일지 > TIL' 카테고리의 다른 글

[ #19 ] TIL  (2) 2024.05.10
[ #18 ] TIL  (0) 2024.05.09
[ #16 ] TIL  (2) 2024.05.07
[ #15 ] TIL  (0) 2024.05.07
[ #14 ] TIL  (0) 2024.05.02