✅ 장기 사이클2
사이클2에서 구현해야할 것은 크게 두 가지이다
- 궁성 영역을 고려하여 기물의 움직임 구현하기
- 장기판을 저장하여 중간에 게임을 다시 시작하더라도 이어서 할 수 있도록 하기 (+ 여러 장기 게임 방 중에 선택가능)
😃 Liked (좋았던 점)
☹️ Lacked (부족했던 점)
- 궁성 영역까지 추가하고 나니 각 기물들에 중복된 코드가 눈에 띄게 많아졌다. 그런데 문제는 이 부분을 추상화하는게 너무 어려웠다. 공통 부분을 추상화 하더라도 코드 가독성이 너무 떨어져서 결국 포기했다.
- 코드를 짤때 너무 고민을 오래하는 것 같다. 설계처럼 고민할게 많은 부분이면 그렇다치는데, 메서드 이름을 정하는 것처럼 사소한 부분까지 그러다 보니 시간도 오래걸리고, 들인 시간에 비해 결과물이 너무 없다보니 자꾸 지치게 된다.
🧐 Learned (배운 점)
- 이번에 순수 Jdbc로 코드를 짜보면서 JdbcTemplate, MyBatis, JPA 등 데이터 관련 라이브러리들의 위대함을 알게되었다. 그래도 Low Level의 코드를 직접 한번 구현해보면서 Java단에서 트랜잭션 및 커넥션 관리를 어떻게 해야할지에 대해 더 잘 이해할 수 있게 되었다.
- `H2 INIT=RUNSCRIPT` 옵션에 대해 알게되었다. 이게 언뜻보면 자바 최초실행시 한번만 sql파일을 실행시키는 것처럼 보이는데, 실제로는 커넥션을 새로 연결할때마다 실행된다. (이거를 몰라서 변경이 반영이 안되는 오류를 잡느라 6시간을 고생했다.)
- H2 2.4.240 버전의 버그를 발견하게 되었다. 서로 다른 세션(커넥션)에서 CHECK 제약조건이 있는 DDL 스크립트가 실행되면 오류가 발생하는 버그였다.
[트러블 슈팅] H2 2.4.240 버전에서 CHECK 제약을 여러 세션(커넥션)에서 사용할 때, 발생하는 버그
❗️문제 상황H2 버전 2.4.240init.sql 파일:CREATE TABLE IF NOT EXISTS game_room( janggi_game_id LONG AUTO_INCREMENT PRIMARY KEY, room_name VARCHAR(10) NOT NULL, last_turn VARCHAR(5) NOT NULL CHECK (last_turn IN ('CHO', 'HAN')), last_played_at TIME
jaehee1007.tistory.com
🤗 Longed for (앞으로 바라는 점)
- 처음에는 일단 돌아가게만 코드를 짜놓고 나중에 추상화를 하면 된다고 생각했는데, 그렇게 해보니 오히려 코드 가독성이 너무 떨어지고 추상화하기도 어려웠다. 뭔가 애초부터 설계 자체가 잘못됐나 생각이 든다. 그럼 처음부터 뭘 어떻게 접근했어야 했는지 솔직히 잘 모르겠다. 다시 시작해도 이렇게 설계했을 것 같은데... 아직 객체지향을 제대로 이해 못한걸까.... 객사오도 읽었는데 이전과 크게 달라진게 없네... , 이제 오브젝트를 읽어봐야 하나.. 책 읽는다고 달라지는게 있을까.... 객체지향은 하면 할수록 진짜 예술에 가까운 것 같다.
'우테코 8기 > 본과정 회고' 카테고리의 다른 글
| [우테코 8기] 5주차 회고 (0) | 2026.03.29 |
|---|---|
| [우테코 8기] 4주차 회고 (0) | 2026.03.22 |
| [우테코 8기] 3주차 회고 (0) | 2026.03.15 |
| [우테코 8기] 2주차 회고 (0) | 2026.03.08 |
| [우테코 8기] 1주차 회고 (0) | 2026.03.01 |