본문 바로가기

전체 글

(4)
[Kotlin] [Auto Mapping] 1. Reflection으로 Class의 프로퍼티들을 자동으로 매핑해보자 개발하면서 아키텍처를 적용하다보면 각 계층 사이에서 데이터를 주고 받을 일이 생겨난다. 이때 사용되는 데이터 객체들을 DTO(Data Transfer Object)라 부르는데 data class Entity( val seq: Long, val title: String, val content: String, ) { } data class Model( val seq: Long, val title: String, val content: String, ) { companion object { fun from(entity: Entity): Model { return Model( seq = entity.seq, title = entity.title, content = entity.content ) } } } 위처럼..
[OOP] SOLID (2) 개방 폐쇄 원칙 (Open Closed Principle) 개방 폐쇄 원칙이란 소프트웨어 개체가 변경에는 열려있고, 수정에는 닫혀있어야 한다는 원칙이다. 여기서 변경이란 기능의 추가라 할 수 있고, 변경은 코드의 수정이라 할 수 있다. 문장만 보면 와닿지 않으니 예시로 생각해 본다. 개방 폐쇄 원칙을 준수하지 않는다면 1. 실생활 예시 회사에 정수기가 있다. 회사 초기에는 따뜻한 물만 원하는 직원들 때문에 정수기에선 따뜻한 물만 나오고 있었다. 어느덧 회사가 추가 채용을 하여 새로운 직원들이 들어오게 되었다. 이때 새로 들어온 직원 중 몇 명은 따뜻한 물은 싫고 시원한 물도 제공해 달라 하여 대표의 지시로 정수기 담당자의 업무가 생겼다. 정수기 담당자는 따뜻한 물이 나오는 출구 옆에 시원한 물이 나오는 출구도 설치하고 해당 출구에는 시원한 물만이 나온다. 그리고..
[OOP] SOLID (1) 단일 책임 원칙 (Single Responsibility Principle) SOLID? OOP의 5대 원칙으로 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)을 말하며, 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 소프트웨어를 만드는 데 적절한 방향성을 제공한다. 소프트웨어 개발을 하다 보면 2가지의 갈림길에 서 있는 경우가 있다. 바로 성능과 유지보수 중 어디에 중점을 둬야 할까? 성능에 눈이 쏠리면 최적화가 일어나고, 반대로 유지보수는 코드가 돌아간다. 개인마다 성향이 다르겠지만 나의 생각으론 유지보수에 중점을 둔 소프트웨어가 웃지 않을까 싶다. 이유는 간단하다. 변화나 장애에 마추질 때, 야근을 원하는 개발자가 있을까? 단일 책임 원칙이란 객체는 단 하나의 책임만 가져야 한..
[OOP] 객체 지향 프로그래밍은 왜 생겨났을까? 개발자 구인 공고글을 보면 심심치 않게 OOP라는 단어들이 자주 보이곤 한다. OOP에 대한 깊은 이해.. OOP기반의 프로그램 설계 능력..같은 글이 보이는데, 대학 시절부터 지겹게 들어왔던 이 객체 지향의 의미와 탄생 배경 그리고 또다른 패러다임을 알아보고자 한다. 프로그래밍 패러다임이란? 프로그래밍은 프로그램 만드는 일이라고 해석하면 되겠고, 그럼 패러다임은 어떤뜻일까? 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다. - 표준국어대사전- 즉, 예전 어떤 이가 설계한 아키텍처를 우리가 코드를 작성할 때 약속된 규약에 맞춰 개발하는 기법이다. 코드의 문법만 아는 코린이들에게 프로젝트 주제를 하나 던져주..