개방 폐쇄 원칙은 확장할 때는 개방, 수정할 때는 폐쇄 원칙으로 불린다. 이는 SOLID 원칙 중에서도 가장 이해하기 어렵고, 마스터하기 어려우면서도 가장 유용한 원칙이다. 개방 폐쇄 원칙을 이해하기 어려운 이유는 코드를 변경할 때 그 결과를 확장으로 보아야하는지, 수정으로 보아야하는지 명확하게 구분하기 어렵기 때문이다. 개방 폐쇄 원칙이 숙달하기 어려운 이유는 '확장할 때는 개방, 수정할 때는 폐쇄' 라는 개념을 어떻게 달성할 것인지, 높은 확장성을 추가하면서 코드의 가독성에 영향을 미치지 않도록 이 원칙을 프로젝트에 어떻게 유연하게 적용할 것인지와 같은 문제는 이해하기 어려운 문제에 속하기 때문이다. 하지만 개방 폐쇄 원칙(확장성)은 코드 품질의 중요한 척도 이기 때문에 가장 유용하다. 디자인 패턴 ..
단일 책임 원칙이란, 클래스와 모듈은 하나의 책임 또는 기능만을 가지고 있어야 한다는 설계원칙이다. 즉, 거대하고 포괄적인 클래스를 설계하는 대신, 작은 단위와 단일 기능을 가진 클래스를 설계해야 한다는 것이다. "변경해야 할 이유는 한가지이어야한다." 으로도 이야기 할 수 있다. 클래스에 비즈니스와 관련 없는 기능이 두 개 이상 포함되어 있으면 책임이 단일하지 않으므로, 단일 기능을 가진 여러개의 작은 클래스로 분할 되어야 한다. 하지만 단일 책임 원칙이 설명하는 대상에는 클래스와 모듈이 라는 것에 주의를 해야한다. 이는 다르게 해석이 될 수 있기 때문이다 해석1: 모듈을 클래스보다 더 추상적인 개념으로 간주하고 클래스를 일종의 모듈로 간주한다. 해석2: 모듈을 좀 더 포괄적인 대상으로 놓고, 여러 클..
오늘은 오랜만에 친누나가 집에왔다. 그래서 근황 개발토크 를 하다보니 시간이 정말 순식간에 지나갔다. 최근에 누나가 겪고있는 이슈는 무엇인지, 어떻게하면 그 이슈를 해결할 수 있을지, 내가 최근에 작업한 내용 공유 등등.. 이런저런이야기를 하다보니 세시간정도가 사라졌다. 대화를 하면서 내가 모르던 부분도 알 수 있었고, 누나가 모르던 부분을 알려줄 수도 있어서 좋았다. 뿐만아니라 내가 알고있는줄 알았지만, 설명할줄모르는 내용도 있었기에.. 아주 유익한 시간이었다. 독서: 추상클래스와 인터페이스 오늘의 독서는 추상클래스와 인터페이스에 대한 부분이다. 이에 관하여 과거에도 글을 읽어본 경험이 있는데, 당시에는 내가 명확하게 둘의 차이점과 존재의 필요성을 인지하지 못했다. 그리고 시간이 어느정도 지난 지금, ..
나는 데이터를 저장 및 업데이트할 때, 각각의 메서드로 분리하여, JPA save() 메서드를 사용하였다. 그러다 어느날 다음과 같은 코드로직을 보게되었다. 1. findById 를 통해 AEntity를 조회, a변수 할당 2. 새로운 b변수에 a변수의 정보를 참조하여, new AEntity를 생성 3. b변수save() 나는 이 코드로직을 보고선, "AEntity 를 새로 생성하는구나" 라는 생각을 했다. 하지만 Hibernate 로그를 보았을 때는 "Insert가 아닌 Update 쿼리가 발생"하였다. 나는 의문이었다. "새로운 b변수에 new AEntity 를 생성했는데 어떻게 PK 중복 에러 없이, 업데이트가 발생했는가?" 궁금했다. 문제의 원인 이 답은, 김영한님의 자바 ORM 표준 JPA 프로..
오늘 하루도 정말 정신없이 지나갔다. 요즘 하루는 해가 짧아지듯, 내 하루도 짧아지는 듯 하다. 면접 준비, 프로젝트 개선, 개인공부, 운동.. 고작 4개를 하다보면 하루가 지나있다. 하지만 이 4개의 일을 모두 해내지는 못하고있다.. 열심히 한다고 하지만.. 아직 내 능력이 많이 부족하다.. 최근에는 왜 인지 자꾸만 나도모르게 멍... 하니 있기도하고.. 이럴때면 잠깐 노래를 듣거나, 운동을 가거나, 책을 보곤하는데 자꾸만 이 상황을 원인을 알고 해결하려는 것이 아니라 회피하려는듯하다. (아니 원인은 분명한데, 내가 벙쪄버린거일 수도..) Product DataAccess 계층 내, 다양한 Product 의 속성 값을 가지고 조회할 수 있는 유스케이스를 추가한다 오늘은 신규 유스케이스에 대한, 영속성 ..
오늘은 새로운 한주의 시작임에도 불구하고, 왜 인지 모르게 활기찬 느낌보다는 많이 지친(?) 하루였다. 아무래도 내가 컨디션 조절 및 마인드 컨트롤이 부족했던 것 같다. 나는 책을 보며 심리적인 안정감(?)을 많이얻는 편인데, 이번 독서한 부분은 기술면접에서 이야기 할 수 있는 주제라는 생각이 들면서, 자꾸만 면접과 관련된 생각을 하다보니 책을 읽는다는 느낌보다는 면접준비의 연장선처럼 되어버린 것 같다. 그래도 저녁 이후, 운동을 다녀오면서 조금 많이 지침이 사라졌다. 역시 사람은 육체적으로 움직여야하나보다. 몸도 마음도 활력은 다시 찾은 것 같아 오늘의 TIL을 쓰는 이 순간, 기분이 좋다. 기술면접 준비 오늘은 아직 면접관련된 연락은 오지 않았지만, 앞으로 있을 수 있는 전화면접, 기술면접에 대하여 ..