최근에 회사에서 새로운 프로젝트 방치하는식으로 던져줬는데

시간도 널널하고
처음부터 다시시작하면서

또 나름 "솔루션 템플릿" 이라는 이름을 달고있어서

되게 객체지향적인?? 재사용성 용이하도록 프로젝트를 짜고 있는데


심지어 인턴이 내 아래로 하나가 있음.


얘 가르쳐주면서


하나하나 다 규약맞추는데




그냥 이거 겉멋이아니라


이거 시발 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 앵간하면 안걸어도 되고, 메세지 알아서 나감. 자기가 원하는 메세지로 알아서 나감.



어느 영역에서 어떤 에러가 발생했는지 메세지 알아서 나감.