이번주 부터 코파일럿과 코딩을 종종 함께 했다. 특정 작업을 할 때는 귀찮게 추천이 들어와 꺼놓기도 했다. 오늘 안테나가 구동하는 방향을 고려하지 못해 생긴 버그가 발견되었고, 안테나 구동 방향을 체크하는 로직을 추가하려고 했다. checkDirection 메서드 이름까지 입력했는데 코파일럿이 코드를 추천해 줬다. 코드를 쭉 읽어봤더니 정확히 내가 작성하려는 코드였다. 놀라운 경험이었다.
토비의 스프링 읽기 모임을 하며 습관의 중요성에 대해 많이 깨닫게 된다. 다른 분들에게 배워 실천해 보았고, 좋은 효과를 경험한 몇 가지 습관들을 다시 견고히 해본다. ‘개발하기 전에 커밋메시지 작성하기’, ‘주석으로 생각 정리하기’, ‘주석으로 정리가 잘 안되면 다시 코드 작성하기’ 등이 있다. 그리고 최근에 테스트와 관련한 유연한 습관 하나를 만들어 보고 있다. 테스트 케이스로 작성한 코드를 처음에 그냥 한 번 돌려 보고 실패하면 디버거로 한 줄씩 따라가며 내부 변수들을 확인해 보는 것이다. 내부 모듈들에 대한 테스트 케이스를 모두 작성하기 과하다는 느낌이 들때 유용했던 것 같다. 좋은 습관을 만들어 특별한 의지 없이 그냥 하면 좋은 것들이 있지만 때때로 유연하게 차선책들을 선택해 나가는 것도 좋을 때가 있는 것 같다.
오늘 현업에서 JUnit @ParameterizedTest 기능을 처음 써보았다. 코드가 매우 간결해지고 읽기도 쉬워졌다. 특히 파라미터를 생성하는 정적 메서드를 통해 테스트 입력을 받도록 했는데 테스트 입력을 생성해 주는 부분이 조금 복잡한 편이고 계속해서 변경이 일어나는 부분이라 확실히 분리되어 좋았던 것 같다. 아래는 테스트 코드로 학습 것이다.
@ParameterizedTest
@MethodSource("testCaseSupplier")
void test(float[] expected, float[] actual) {
System.out.println(Arrays.toString(expected));
System.out.println(Arrays.toString(actual));
}
static Stream<Arguments> testCaseSupplier() {
return Stream.of(
arguments(new float[]{1, 2, 3}, new float[]{4, 5, 6}),
arguments(new float[]{1, 2, 3}, new float[]{4, 5, 6})
);
}