먼저 글 쓰기에 앞 서 매니저님 금요일TIL은 제가 기억력 문제가 있어 죄송합니다... 그 날 밤샘코딩으로 정줄을 놔서....

이번주는 처음으로 팀프로젝트를 해본 주였다. 사소하다면 사소하고 크다하면 큰 의견 충돌이 있었는데 결국 금요일에 기능 구현이 어느 정도 끝나서 너무 멀리 온 바람에 하지 않기로 결정한 듯 하다.

목요일 저녁에 정줄 놓고 새벽 4시 30분 즈음까지 코딩을 하면서 어드민로직이랑 디비 엔터티를 건드려놔서 머지할 때 무섭긴 했는데 다행히 다른 분들이 수정해서 가져오기로 한 쪽은 안 건드려서 충돌은 없었다. 그래서 어드민 로직과 UI 쪽은 내가 거의 맡아서 작업한 듯 하다. 물론 UI는 내가 로직을 짜오니까 다른 분이 수정 도와주시면서 이런 식으로 작성하면 되겠죠 하면서 보여준거 토대로 수정한거지만.

처음 내가 만들어간 프로젝트를 보면 정보거르기를 잘 할 줄 몰라서 Optional<>stream이 여기저기 있었는데 금요일에 푹 자고 토요일부터 수정을 하니 어느 정도 정리가 되어서 Optional은 다 뺀 거 같다. 이걸 우리 프로젝트에 가장 먼저 쓴 죄인이 나였는데 하필이면 자주 쓰는 함수에 들어가있어서 Optional이 계속 계속 늘었다... 반성하도록 하자. 내가 만든 로직의 일부가 디비가 해야하는 작업이어서 그걸 디비 쪽으로 분리하는 작업을 했는데 갑자기 데이터 출력이 안 되기 시작했다...

방법을 찾다가 주말이고 짜증나니 한 짓이 처음 팀프로젝트를 할 때부터 제일 거슬려 했던 부분인 로그인 회원가입 기능 합치기였다. 물론 혹시 몰라 브런치를 따로 팠다.

너무 많은 정보가 바뀌면 발표가 힘들다고 하셔서 안 합치기로 했지만 팀이 작성 중인 코드를 보면 로그인과 회원가입이 각 로직에 따로 있고 메인에서 그것을 검증하는 코드 역시 중복이 상당히 많다. 그래서 그걸 하나로 합치겠다고 한 짓인데 내 돌아버린 정신버리는 또다시 정신을 못차리고 일을 만들어버렸다.

admin_ 붙인다고 일반 유저가 회원가입되게 하는게 말이 되나? 해서 관리자 계정인지 아닌지 검증하고 관리자는 신규 관리자를 만들 때 기존의 관리자가 로그인을 한 후 만들어 줄 수 있게 했다.

그렇게 해서 2개의 클래스가 생겼는데 각각 mainLogicselectSignUpOrLogin이었다. 메인로직에서는 생성되기만 했지 쓰여본 적이 없는 관리자와 일반 유저의 키값을 사용할 수 있었다. boolean형으로 true면 관리자 false면 일반유저로 하게 만든 후 회원가입은 관리자 계정이 로그인을 한 상태여야하기 때문에 User 객체를 받도록 했다. 이 경우 발생하는 문제점이 일반 유저의 경우에는 보내줄 User 객체가 없다는 것이었는데 처음에는 별 생각없이 null을 넣어주면 되겠지 했다.

NullPointException을 생각 안 한 자의 참사였다. 처음에는 디비 쪽에서 데이터를 성형해보려고 했다. 그 후에는 객체가 초기화될 때 매개변수로 id를 하나만 받으면 그거는 초기화를 해주기로 했다. 그런데 String은 기본값이 null이라 줄줄이 걸린다는 생각을 한 해본 바보짓이었다. 그 다음에는 아무값이나 넣어서 초기화가 되도록 했고 저 값이 정말 우연의 일치로 맞으면 어쩌지 하다가 ""를 쓰면 된다는 걸 기억했다. 그간의 뻘짓이 떠오르면서 왜 이런 바보짓을 했지 싶더라.

매번 글을 쓸 때마다 하는 말이지만 나는 뭐 하나에 빠지면 밥도 안 먹고 잠도 안 자고 그것만 하는 타입이라 토요일에 시작한 삽질은 일요일 낮까지 계속 됐다. 디비 쪽에서 문제가 난 건데 엉뚱한 짓만 하던 나는 내가 코드 수정을 하는 바람에 적용시킨 싱글톤 패턴이 깨졌나? 그걸 잡아야 하나? 하면서 그거 적용 방법 중에 enum을 사용하는 방식이 있다는 것을 알았다.

21년 작성글에도 잘 안 알려진 방법이라고 했는데 가장 쉬워보여서 골랐다가 정보가 거의 없어 뻘짓만 했다. 그래도 사용법은 어느 정도 알았으니 나중에 써보면 될 듯 하다. 단일로만 쓸 수 있기 때문에 상속을 받는 경우에는 사용이 불가능하며 모든 객체는 private final? 벌써 헷갈리네 을 써주고 함수로 접근할 수 있도록 해줘야한다는것은 클래스와 상당히 비슷했다. 그저 위에 키워드가 붙은 것만 다를까.

예제 코드를 보면서 작성을 해봤는데 처음에는 엄청 헤맸다. 자료라고 있는 것들은 다 비슷비슷한 예제지 이거 어레이 리스트도 쓸 수 있나? 싶지 정작 적용 했더니 아직도 계좌 정보가 안 떴다! 하지만 그건 디비 문제였으니 지금생각해보면 적용은 나름 잘 한편이었다. 상속관계 적용시키면 말짱 도루묵이라 뺐지만

오후 즈음부터 앉아서 졸면서 코딩을 하니까 안 되겠다 싶어서 침대에 누웠다 그런데 나는 누우면 잠이 깨는 타입인지 잘듯말듯 졸다가 개발자인 친구에게 도움을 요청했다. 친구가 밖인데다 나도 졸려서 일어나기 싫어서 오후 10시 즈음부터 도움을 받았지만... 그 전에 받았으면 2개를 만든 것 중 하나를 빼는 삽질은 안 하지 않았을까 싶었지만 친구한테 작동에 문제있는 코드를 보여주고 싶지는 않았다. 하나만 문제였던게 내가 일을 벌여서 여러개의 문제가 되어버린 것이었으니까.

이것저것 만들면서 미리 입력해놓은 값이 안 들어가 결국 하나를 합쳤는데 합치고도 안 들어갔고 전에는 잘 들어갔던거 생각하면 그냥 내가 오류 하나났다고 이거저거 건드리다 뻘짓한거지만... 발표자분이 내일까지는 완성본이 나와야 발표를 할 수 있다고 하셔서 내일 내가 맡은 디비 수정부분을 끝낸 후 합쳤던 걸 다시 나눠야겠다.

내가 만들어놓은 지금의 은행 구조는 아래와 같다.

로직들은 디비에 접근할 수 있다. 미리 입력해놓은 값이 있어서 어쩔 수 없이 메인에 DB를 넣긴 했는데 저 역할이 애매모호한 로그인&회원가입 UI 쪽에 넣어놓으면 되지 않을까. static으로 선언했을 때 어느 쪽에 있든 값이 들어간다면 메인 로직쪽에 들어갈 것이다.

현재 팀프로젝트에서 짠 구조는 이런 모양이다.

처음에는 은행인데 왜 저렇게 나누지? 관리자가 왜 삭제를 제멋대로 하지? 했는데 그냥 은행과 관리자를 구분 못한 우리 팀의 실수였다. 그걸로 의견 다툼이 제일 많았고 결국 토요일에 왜 그렇게 생각하는지에 대해 적어서 슬랙에 공유했고 다른 분들도 인정은 하셨지만 시간 부족의 이유로 그건 후순위로 빠지게 되었다.

내일은 입실하자마자 디비 코드 수정만 하면 팀 프로젝트에서 내가 할 일은 끝날 듯 하다. 빨리 끝내고 합쳤던거 나누고 관리자와 일반 유저의 역할을 명확히 구분해서 키를 바꾸는게 목표다.

이번주는 협업에 대해 생각을 많이 한 주 같다. 사실 나는 초중고 심지어는 다녔다 말다한 전문학교에서 마저도 팀플이라는 걸 해본 적이 없다. 초중고는 그런게 없었고 전문학교를 다닐 때는 몸이 안 좋았기 때문에 교수님께 말해서 혼자 따로 했으니까.

협업과 예쁜말하기 모두 잘 못한 주였던 것 같다. 일단 협업은 하긴 했지만 의사소통에서 예쁜말하기 쪽과 함께 마이너스였으니까. 아빠는 그게 사회라면서 네 의견이랑 안 맞아도 그게 다수면 맞든 틀리든 따르고 네 생각은 따로 적어서 나중에 결과가 나왔을 때 발생하는 문제점을 내가 작성한 것과 비교를 해보라고 하셨다. 혼자 고집부리면 결국 고립된다고 말이다.

그러시면서 내가 밤새 코드를 짜는 것에 대해서도 말하셨는데 다 같이 배우는 입장이니 혼자 앞서 나가지 말고 맡은 부분을 다 짜고 시간이 나면 내가 생각한 것을 구현해보라고 하셨다. 내 의견이 맞는 것 같아도 내가 소수라면 조용히 다수쪽에 편승해 있다가 내가 생각한 것과 얼마나 차이가 있는지 내가 구현한 것 역시 저기서 지적받은 내용과 일치하는게 있는지 아님 내 생각이 맞았는지 비교해보라고 하셨다. 그것 역시 배우는 입장에서는 공부가 되고 너한테 좋은 것이라고 말이다. 다섯명이 나눠서 한 일을 너는 혼자 다 해봤으니 그게 더 좋지 않느냐고 말이다.

괜히 뻗대다가 사람들한테 왕따 당하지 말라는 조언이었다. 하지만 관리자가 삭제를 멋대로 하는 건 이상했는걸...

다음주에 수업을 들으면서 목표하는 것은행 추가 기능 구현호텔 예약 시스템 구현이다. 이건 팀플이 아니기 때문에 시간이 오래 걸릴 듯 하다. 나는 아직 단축키도 익숙하지 않고 손이 느려서 열네시간 동안 구현한게 관리자로직과 그 관련 부분 수정이 다였으니 말이다. 그조차도 코드가 드러워서 다른 분이 깔끔하게 수정해주셨다. 손이 빨라질 것 같진 않으니 익숙해지기를 비는 중이다. 검색 시간이라도 줄일 수 있으니까.

그리고 이번주에 처음 안 점, 사람은 오래 앉아있어도 다리에 근육통이 온다. 중간중간 움직여주도록 하자.

profile
개발자의 길에 한 걸음 더

1개의 댓글

comment-user-thumbnail
2022년 11월 28일

아이고 저한테 죄송하실 필요 없습니다!! 그만큼 몰입했다는 뜻으로 알겠습니다~! 하지만 몰입후엔 기록하여야 더 기억에 오래남는 건 혜민님이 더 잘 아실테니... 이만 줄이겠습니다~!! 주말동안에도 정말 너무 고생많으셨어요~!!

답글 달기