확장에는 자유롭게 열려 있고 변경에는 굳게 닫혀 있다는 객체지향 설계 핵심 원칙인 개방 폐쇠 원칙 을 다시 한번 생각해보자. 이 원칙은 코드에서 어떤 부분은 변경을 통해 그 기능이 다양해지고 확장하려는 성질이 있고, 어떤 부분은 고정되어 있고 변하지 않으려는 성질이 있음을 말해준다. 다른 목적과 다른 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어주는 것이 바로 개방 폐쇠 원칙 이다. 템플릿이란 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭괴 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 기법이다. 템플릿 메소드 패턴의 적용 템플릿 메소드 패턴은 상속을 통해 기능을 확장해서 사용하..
우아한유스방 은 유쾌한 스프링방 이라는 카카오톡의 오픈채팅 단톡방에서 진행되는 프로그램이다. 과정은 총 5개의 과정으로 구성되어 있으며 매일 구성원들이 정해진 시간에 모여 공부하고 학습한 내용을 공유한다. 기다리던 첫 오리엔테이션에 참여하게 되었고, 느낀 후기를 간단하게 작성해본다. 나의 위치가 어디인가? 아래 순서로 공부한다고 하였을 때 나의 위치가 어디인지 파악하면 좋을 것 같아요 학습과 적용, 응용에 대한 태도 클린코드, 좋은 설계를 이끄는 단위 테스트 웹 기술과 웹 프로그래밍 스프링 프레임워크 데이터베이스 ORM 프레임워크 CI/CD를 위한 인프라 스트럭처 클린 아키텍처 DDD 분산 시스템 인프라 스트럭처 MSA .... 신입부터 현재까지 열심히 달려왔지만 나에게 많은 생각을 들게 해준 문장이었다..
스프링 기초를 공부하거나, 핵심 개념을 공부한다면 DI/IoC 는 빼놓을 수 없는 중요한 개념입니다. 객체지향 설계 원칙을 더욱 우아하게 지킬 수 있도록 도와주는 스프링의 3대 요소 중 하나인 DI/IoC 의 개념을 예제 코드와 함께 정리해보도록 하겠습니다. DI (의존관계 주입) 의존관계 먼저 의존관계란 무엇인지 생각해봅시다. 두 개의 클래스 또는 모듈이 의존관계에 있다고 말할 때는 누가 누구에게 의존하는 관계에 있다는 식이여야 합니다. UML 모델에서는 두 클래스의 의존관계를 다음과 같이 점선으로 된 화살표로 표현합니다. A가 B에 의존하고 있음을 나타낸다. 그렇다면 의존하고 있다는 건 무슨 의미일까? 의존한다는 건 의존대상, 여기서는 B가 변하면 그것이 A에 영향을 미친다는 뜻입니다. B의 기능이 ..
애플리케이션은 계속 변하고 복잡해져 간다. 그 변화에 대응하는 첫번째 전략이 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IoC/DI 같은 기술이라면, 두 번째 전략은 만들어진 코드를 확신하게 할 수 있게 해주고, 변화에 유연하게 대처할 수 있는 자신감을 주는 테스트 기술이다. 웹을 통한 DAO 테스트 방법의 문제점 보통 웹 프로그램에서 사용하는 DAO의 테스트 하는 방법은 웹 화면을 띄워 폼을 열고, 값을 입력한 뒤 버튼을 눌러 등록한다. 이렇게 웹 화면을 통해 값을 입력하고, 기능을 수행하고, 결과를 확인하는 방법은 가장 흔히 쓰이는 방법이지만, DAO에 대한 테스트로서는 단점이 너무 많다. 그렇다면 테스트를 어떻게 만들어야 이런 문제를 피할 수 있고, 효율적으로 활용할 ..
초난감 DAO @Getter @Setter public class User { String id; String name; String password; }JavaBean 규악을 따르고 사용자 정보를 저장하는 User 클래스를 생성한다. JavaBean 멤버 변수마다 별도의 getter/setter method 가 존재 getter method 는 매개변수가 존재하지 않는다 setter method 는 반드시 하나 이상의 매개변수가 존재한다 construct 는 매개변수가 존재하지 않는다 디폴트 생성자 javaBean 은 파라미터가 없는 default construct 를 갖고 있어야 한다. 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하기 때문에 필요하다 Reflection API란? 마법처럼 클래스의..
디프만을 알게되다 디프만은 14주간 디자이너와 프로그래머가 서비스 기획부터 런칭까지 참여하는 IT동아리이다. 우연히 2월달부터 모집한다는 소식을 알게되었고, 매일매일 새로고침을 하며 지원 날짜를 기다렸다. 혹시 내가 모르는 사이에 지원이 마감 됐는지 궁금해서 인스타그램 DM 으로 문의까지 하였다. 우연히도 그 날 저녁 갑자기 디엠이 와서 확인을 해보니! 모집 일정 공지가 올라왔다는 소식을 알려주셨다. 지원서 작성 정말 열심히 작성한 기억이 있다. 혹시나 놓친 부분이 있지 않을까 마감일까지 지원서를 지속적으로 확인하며 문맥이 이상하지는 않은지, 주제에 맞지 않는 내용을 작성하였는지 검토하였다. 최대한 개발 경험을 표현하려고 노력하였고 과장되지 않은 솔직한 경험을 글로 적기란 쉽지 않았다. 서류 지원 결과 ..
사이드 프로젝트 기획은 어느정도 구색을 갖추었고, 기획을 토대로 기술적으로 구현이 가능한지 검토가 필요하다. 우선 필요한 기능을 먼저 나열해보았다. 기본 기능 (우선 순위) 인스타그램 데이터 수집 수집된 데이터를 기반으로 가공 가공된 정보를 사용자에게 전달 추가 기능 (후 순위) 회원가입 & 로그인 사용자마다 내가 응모 했던 매장을 체크할 수 있는 기능 커뮤니티 게시판 인스타그램 데이터 수집은 셀레니움 라이브러리를 사용할 생각이다. 한가지 문제점이 있다면 인스타그램에서 API를 제공해주지 않아 실시간으로 등록되는 게시글에 대한 수집 여부이다. 실시간 웹 애플리케이션 개발이 부족하여 조금 더 검토를 해야겠지만 리소스 낭비가 발생하더라도 정확한 정보를 사용자에게 전달해주는게 목적인만큼 주기적으로 업데이트 요..