-
2022년 6월 27일 TIL - 이게 왜 안돼?Today I Learned 2022. 6. 28. 03:14
'이게 왜 안돼?' 2018년부터 개발 공부를 하면서 수없이 느꼈던 감정이다. (사실 지금 생각해보면 옛날에는 충분한 논리를 갖춰놓지 않아놓고 왜 안되냐고 떼쓴 적이 많았지만) 맞는 논리를 세웠는데 안 될 때, 다른 방법을 써도 안 될 때, 또 다른 방법을 써도 안 될 때 느껴지는 억한 심정은 겪어도 겪어도 익숙해지지 않는다.
8주차 주간 과제인 게시판을 작성하는 과제를 수행하고 있었다. 원래는 HTML, CSS, HTTP 개념을 이용해 구현해야 하는 과제였으나, 난이도 조정을 위해 Swing을 활용하는 것으로 변경된 상태였다. 주말 동안 세웠던 '가장 간단하지만 가장 핵심적인 것부터'를 모토삼아 하나의 게시글의 내용을 출력하는 형태를 가장 먼저 구현했고, 그 구조를 확장시켜서 게시글들이 여러 개가 있을 경우 어떻게 관리하도록 해줘야 할지에 포커스를 맞춰 구현해나가고 있었다.
게시글들이 여러개일 때부터는 중복되는 소스코드들이 많아져 소스코드의 리팩터링 필요성이 느껴졌고, 클래스와 메서드를 만들어서 관심사를 적절히 분리하고 소스코드를 간결화했다. 그러나 메서드화를 수행한 뒤부터 이전에는 프레임 화면에 내용이 잘 출력되었었던 것들이 출력되지 않는 것이 확인되었다. 게시글 페이지 패널 클래스의 구조 문제인가 싶어 몇 번을 구조를 바꿔보았지만 소용이 없었다. 한 시간 반 정도를 고민한 끝에 원인을 찾을 수 있었는데, 게시글 패널들이 담기는 상위 패널을 정의해 게시글들을 해당 패널에 추가하도록 했으면서 그 상위 패널을 프레임에 추가하지 않았던 것이 원인이었다.
완성된 상태의 프로그램을 확장시켜 나가는 어느 순간부터는 더 나은 처리 구조와 관심사의 분리를 적절히 수행해주기 위한 리팩터링이 필요한 순간이 찾아온다. 리팩터링하기 이전에 프로그램의 핵심 도메인을 바탕으로 어떤 클래스를 생성하고 사용할지 고민하고, 리팩터링을 하면서와 마친 후에는 리팩터링하고자 했던 구조를 잘 따랐는지 충분히 확인하는 과정을 거쳐야 할 것이다.
'Today I Learned' 카테고리의 다른 글
2022년 7월 3일 TIL - Pressure (0) 2022.07.03 2022년 7월 22일 TIL - 본질이 무엇인지를 잊어버리게 되면... (0) 2022.07.03 2022년 6월 26일 TIL - 가장 중요한 게 뭔지 잡아내야 한다 (2) (0) 2022.06.27 2022년 6월 25일 TIL - 가장 중요한 게 뭔지 잡아내야 한다 (0) 2022.06.26 2022년 6월 24일 TIL - 글 안 쓰고 싶어요 (부제: 소통 어떻게 잘 해요?) (2) 2022.06.25