현재 SpringBoot의 동작 과정을 분석하는 포스팅을 작성하고 있습니다. 해당 소스코드를 분석하다보니 매우 작지만 컨트리뷰트를 할만한 코드를 찾게 되었습니다. 그래서 이번에는 어떻게 하면 오픈 소스에 컨트리뷰트 할 수 있는지 알아보고, 실제로 컨트리뷰트를 해보고자 합니다. 1. 컨트리뷰트할 내용 찾기 [ 컨트리뷰트할 내용 찾기 ] 오픈 소스에 컨트리뷰트하기 위해서는 수정할 코드 및 문서 등을 찾아야합니다. 특정 프로젝트의 Issues에 가서 원하는 이슈를 찾아도 되는데, 저는 이번에 SpringBoot 코드를 읽으면서 발견한 내용으로 컨트리뷰트를 하였습니다. 제가 컨트리뷰트한 코드는 다음과 같습니다. private void configureIgnoreBeanInfo(ConfigurableEnviron..
객체지향 프로그래밍에서 코드를 재사용하기 위한 방법으로 크게 상속과 합성이 있습니다. 대부분의 경우 상속보다 합성을 이용하는 것이 좋은데, 이번에는 왜 합성을 사용해야 하는지에 대해 알아보도록 하겠습니다. 아래의 내용은 클린코드, 이펙티브 자바, 오브젝트 등을 참고하여 작성하였습니다. 1. 상속(Inheritance)과 합성(Composition) 개발을 할 때 가장 신경써야 하는 것 중 하나가 중복을 제거하여 변경을 쉽게 만드는 것이다. 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하여 중복을 제거하기에 용이하다는 것인데, 이를 위한 방법에는 크게 상속과 합성 두 가지가 있다. [ 상속(Inheritance) 이란? ] 상속은 상위 클래스에 중복 로직을 구현해두고 이를 물려받아 코드를 재사용하는 ..
프로그래밍을 하다보면 추상화를 이용하고, 응집도가 높고 결합도는 낮은 애플리케이션을 개발해야 한다는 얘기를 많이 듣습니다. 그래서 이번에는 객체 지향 프로그래밍의 핵심 특징들인 캡슐화, 응집도, 결합도에 대해 알아보고자 합니다. 아래의 내용들은 클린 코드, 오브젝트 등에서 참고한 내용들이 많이 있습니다. 1. 캡슐화(Encapsulation) [ 캡슐화(Encapsulation) ] 객체지향 프로그래밍이 강력한 이유는 요구사항이 새롭게 추가되거나 바뀌어도 변경이 전파되지 않도록 막을 수 있는 장치들을 제공하기 때문이다. 그리고 이를 위한 대표적인 장치 중 하나가 캡슐화이다. 캡슐화를 이해하기 위해서는 퍼블릭 인터페이스와 구현에 대해 알아야 한다. 객체의 행동은 크게 퍼블릭 인터페이스(public Inte..
이번에는 객체 지향 프로그래밍의 5가지 핵심 원칙인 SOLID에 대해 알아보고자 합니다. 실제로 애플리케이션을 개발할 때 어떻게 적용할 수 있을지 구체적인 예시를 들어 살펴보고자 합니다. 아래의 내용들은 클린 아키텍처, 오브젝트 등에서 참고한 내용들이 많이 있습니다. 1. 객체지향 프로그래밍의 5가지 설계 원칙, SOLID SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙으로 각각 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)의 앞글자를 따서 만들어졌다. SOLID 원칙을 철저히 지키면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 되는 것으로 알려져있다. ..
이번에는 클린 코더(Clean Coder)라는 책을 읽고, 중요하다고 생각되는 내용들을 정리해보도록 하겠습니다. 1. 프로의 마음가짐 [ 함부로 바라지 마라 ] 프로의 마음가짐, 프로페셔널리즘(Professionalism)이라는 용어에는 숨은 뜻이 있다. 그것은 명예와 긍징의 상징인 동시에 책임과 의무를 나타내는 것이다. 프로가 아니라면 세상을 살기 편해진다. 하는 일에 책임을 느낄 필요가 없고, 회사에 책임을 떠넘겨도 되기 때문이다. 하지만 프로는 실수하면 스스로 뒷감당을 해야 한다. [ 기능에 해를 끼치지 마라 ] 오류를 만들면 안된다. 오류를 만들면 기능에 해가 된다. 따라서 프로가 되려면 오류를 만들면 안된다. 하지만 소프트웨어는 너무 복잡해서 오류가 생길 수 밖에 없다. 그렇다고 너무 복잡하다는..