심지어 인턴이 내 아래로 하나가 있음.
얘 가르쳐주면서
하나하나 다 규약맞추는데
그냥 이거 겉멋이아니라
이거 시발 mockBean 문제가 좀 있는데
하고서 내가 직접 상속으로 가짜 구현체 만들어서 Test 프로파일에만 넣고
그러고 나서 나중에 인턴이 알아와주대?
서비스를 Service interface 와 Impl 로 분리하는 이유중에 하나가 mock Service를 만들기 위함이라고 테스트케이스같은데에서
여튼 상속을 통한 가짜객체 만들기
요즘들어
제네릭 코딩 많이하고
제한자로 항상 private 이랑 public만 썼었는데
protected 많이 쓰게 됨
뭐 사실 public해도 큰 상관은 없지만, 그렇게따지면 private도 다 public으로 해도 노상관이잖아?
여튼 protected 되게 많이쓰게되고
결정적으로
제네릭코딩을 많이하다보니
Type.class 를 인자로 집어넣는 메소드도 많이 만들게 되고
리플렉션도 많이 쓰고있음.
문서화같은 경우에는
ascii doc 쓰는데
빌드 스크립트랑 태스크 다 뜯어서
최적화시키는데 이것도 주말포함 3일 15시간씩 40시간정도 박아서 만들었는데
인턴이 흡족하게 쓰고 있음.
build 디렉토리도 직접 건드리는게 많고
그러다보니 아직 내가 좀 부족한부분이긴 한데, 파일을 직접 nio 써서 read write하는 경우도 많고
문서화 시키는 과정에서 parameter같은거도 다 규약화 하고 스니펫만들고
진짜 걍 나 1인 기업 만들수 있다
구라 안까고
걍
내가 지금 솔루션 이거 만드는거만
보고 따라하라고 시켜도
SI회사 하나는 나올듯
물론 그럴생각은 없음.
다만 한가지 아쉬운점은
이게 나름 자바 1년 경력의 결과물인데
클로저에도 1년 써야 이정도 경험이 나올까?
하스켈에도 1년 써야할까?
지금 그냥
Request받는거에 Validation 걸기라던지
Filter / Interceptor 라던지
사실 JPA도 할말 많고
나름 1년동안 쌓은게 많아가지고
클로저랑 하스켈, 그리고 C++ 얘네도 각각 1년씩은 박아야 이정도 하겠지? 라는 생각이 들더라
아 우리 프로젝트 익셉션 처리하는것도 존나깔끔함.
캐치해서 api익셉션으로 재구성하는 경우에는 로그로 찍고
api익셉션을 맨땅에 내보내는 경우
그리고 가장 바깥에서는 api익셉션이 튀어나왔을경우랑,
그 외의 예상하지 않은 익셉션이 튀어나온 경우
이런거 다 분리해놔서
try catch 없이
사실상 모든 경우가 ApiException 이라는 에러로 포장해주면 알아서 try catch 된것처럼 매니지되도록 해놨음.
그냥 api 에 try catch 앵간하면 안걸어도 되고, 메세지 알아서 나감. 자기가 원하는 메세지로 알아서 나감.
어느 영역에서 어떤 에러가 발생했는지 메세지 알아서 나감.
나 지금 프로젝트 디렉토리 구조맞춰서 리플렉션 걸어놔서 findById(User.class, userId); 뭐 이런식으로만 하면 알아서 레포지토리 갖고와서 (오토와이어 필요없음) 널체크 다 해주고, 아까 앞서서 말했던 try catch 없어도 에러메세지 자동으로 내뱉고 자동으로 최상단스택까지 가서 스탑시키는거 그 작용 적용돼서 그냥 여튼 findById(User.class, userId) 하면 다 됨. 당연히 형변환 필요없음. 제네릭처리 해놔가지고 그리고 이거는 protected 라서 findById도 오토와이어 없이 쓸수있고
이런식으로 뭐 리플렉션이던지 저수준 파일입출력이라던지 컨피그같은데에다가 심어두고 자동화시켜둔게 ㅈㄴ 많음 문서화쪽이 진짜 잘되어있음 재사용가능한거 다 protected에 넣고, 제네릭으로 만들고
잘만들엇네
근데 아직 어노테이션을 안쓰거든?? 솔직히 귀찮아서 안쓰고있는데 어노테이션 만들어서 지금 있는 상속관계나 리플렉션이랑 섞어쓰면 진짜 날라다닐듯
어노테이션 쓰고, 아예 어노테이션 프로세서까지 만들면 그냥 뭐 프레임워크 위에 올라가있는 커스터마이제이션레이어? 프레임워크 위의 프레임워크 되는거
스프링의 괴물 ㄷㄷ
테스트 코드를 많이짜게됨. 이게 테스트 좆밥이라고 생각해오고 대충했었는데, 나름 테스트하자고
DB 스키마부터 격리시켰음. 스키마라는 단어 맞나? 그 포스트그레스에서는 스키마라는 단어 쓰던데. 처음에는 patch 를 테스트하기위해서 항상 insert 테스트가 선행되어야하는가? 이런 질문을 던지다가. 아니 이건 독립적이어야한다. 그러면 db가 격리되어야한다. 뭐 이런생각까지가고 mock 객체를 만들라고 해도 test 쪽 코드가 격리되어있어야하고, 당연하게 application.yaml을 테스트쪽에 따로 만들게되고 기타 등등.. 이거 제대로 하니까 재밌더라 존나재밌음 진짜
걍 생각하는대로 다 구현가능하고, 뭔가 문제부딪힐때마다 해결책이 바로바로 떠오르고 그게 무리수가아니라 그냥 직선코스 불도저로 밀어버리니까 존나재밌음. 리플렉션같은거 만들고 진짜 작동하고 특히 리스폰스로 메세지까지 존나 고수준으로(휴먼리더블)하게 바껴서 나오는거보면 내가 해놓고도 놀라움
인턴을 하위로 부릴수 있게돼갖고, 아 그래 cs공부 잠깐 중단하고 진심코딩 처음으로 한번 해보잡시고 처음으로 진심코딩해봤는데 진짜 뭐 나 1년 전이랑 아예 차원이 달라졌네. cs공부할 겸 겸사겸사 다닌 회사인데도 존나많이배웠음
뭐 자꾸 시행착오 하면서 성장하겠지 아무것도 안하는거보단 엉뚱한 상상도 해보고 왜 엉뚱했는지 알게 되면 다 경험 아니겠노
그래들에 쉘스크립트 연결하고, 지랄하던거 있는데, 인턴이 "이건 아닌거같다" 하다가 아 씨발 그냥 메소드마다 @BeforeEach 인가 @AfterEach인가 이런거 쓰면 굳이 그래들단계에서 자동화 안시켜도 메소드 안에서 자동화시키면 되겠다. 뭐 이런 얘기 나와서 중단한것도있고
I am java해요
조현병 환자의 더닝크루거효과ㅋㅋㅋㅋ
해당 댓글은 삭제되었습니다.
히히