1주 차 온보딩 github
https://github.com/donghoonyeom/java-baseball-6/tree/donghoonyeom
GitHub - donghoonyeom/java-baseball-6
Contribute to donghoonyeom/java-baseball-6 development by creating an account on GitHub.
github.com
[시작하면서]
프리코스 1주 차 온보딩 미션을 진행하면서 느꼈던 부분과 클린 코드 문서를 통해 배웠던 부분을 회고해보려고 한다.
[클린 코드]
부끄럽지만 난 지금까지 개발을 공부하면서 클린코드를 진행한 적이 없다. 처음 알게 된 건 우테코 디스코드 커뮤니티에서 한 지원자분께서 클린코드에 대한 내용을 올려주셨었는데 우테코 PR전 체크리스트라는 github문서였다.
그 문서에는 PR전에 자신의 코드가 클린코드적용이 되어있는지 체크리스트들이 적혀있었는데, 대부분 내가 개발을 진행하면서 처음 접하는 내용들이었다. 코드 작성 전 가장 먼저 코드컨벤션부터 맞추고 진행하였다. 난 문서에서 제시하는 Google Java 코드 컨벤션을 적용하였고, 커밋 전 자동으로 컨벤션을 맞춰주는 플러그인을 설치해서 적용하였다. 문서를 읽으며 가장 궁금했던 부분은 else예약어 부분이었다. 항상 if문을 사용하면 무조건 else도 함께 사용해 왔는데 어떻게 사용하지 않고 작성할 수 있지? 궁금증이 생겨 여러 블로그 글이나 GPT에게 질문해 보며 찾아보았다.
- 빠른 반환 - number를 조건에 만족하는 즉시 반환되어 중복된 else 문을 사용하지 않을 수 있다.
public class Main {
public static String checkNumber(int number) {
if (number > 0) {
return "양수입니다.";
}
if (number < 0) {
return "음수입니다.";
}
return "0입니다.";
}
public static void main(String[] args) {
int number = 5;
String result = checkNumber(number);
System.out.println(result);
}
}
- 조건부 표현식 - "(조건) ? 참일때의 값 : 거짓일때의 값" 형태로 작성되며, 여기서 중첩된 조건을 간결하게 표현할 수 있다.
public class Main {
public static String checkNumber(int number) {
return (number > 0) ? "양수입니다." : ((number < 0) ? "음수입니다." : "0입니다.");
}
public static void main(String[] args) {
int number = 5;
String result = checkNumber(number);
System.out.println(result);
}
}
[테스트 코드]
개발을 공부해보면서 직접 내가 어떤 예외가 발생할지 고민해 보며, 처음으로 작성해 보았다. 어떤 테스트가 적당할지 고민해 봤지만 예외가 발생할 수 있다고 생각되는 부분에서 테스트하기로 하였다. 가장 예외가 발생할 것이라고 생각되는 부분은 사용자의 입력이 올바르지 않을 때였다. 사용자가 게임을 시작하면 입력할 수 있는 건 1~9 범위의 서로 다른 3가지 수밖에 없다. 가장 먼저 3가지 이상의 수를 입력했을 때, 1~9 범위를 벗어났을 때, 중복된 숫자가 있을 때, 숫자가 아닌 다른 문자를 입력했을 때 이렇게 4가지 변수를 생각하고 IllegalArgumentException를 이용해 예외처리를 해주었다. 마찬가지로 게임 재시작 부분에서 1,2가 아닌 다른 수나, 문자를 입력하는 부분도 같은 방법으로 예외 처리를 진행했고, 우테코 초기 테스트에 추가로 내가 부족하다고 느낀 부분을 추가해서 테스트를 진행했다. 하지만 테스트 코드를 제대로 작성해 본 적이 없어서 가독성을 생각하지 못해서 given-when-then을 분리해서 작성하지 못했고, 더 많은 테스트케이스를 생각해내지 못했다. 2주 차부터는 이번주보다 부족하다고 생각되는 부분을 보완하려고 한다.
[마무리]
난 항상 개발을 해올 때 프로그램이 큰 문제없이 돌아가기만 한다면 크게 코드의 재사용성이나 가독성에 대해서 생각해 본 적은 없었다. 하지만 정말 큰 착각이었다. 이번 주를 진행하면서 전에 생각도 해보지 못한 코드의 가독성이나 코드의 재사용성을 높일 수 있는 클린코드에 대한 부분과 테스트 코드의 중요성을 깨닫게 된 것 같다. 확실히 프리코스 전보다 많이 성장한 게 느껴지지만, 아직 부족하다고 생각되는 부분이 너무나도 많다. 다음 주 미션부터는 더 좋은 코드를 만들기 위해 클린코드 진행을 조금 더 확실히 해야겠다는 생각과 테스트코드에서의 given-when-then을 분리한다던가 더 많은 테스트 케이스를 작성해 보고 싶다고 생각한다.
'Development > 회고' 카테고리의 다른 글
[Section 3] 회고 (1) | 2023.07.06 |
---|---|
안녕하세요! (day 1) (0) | 2023.04.15 |