전체 글
DDD(Domain Driven Desgin)
최근에 자주 사용된다는 DDD에 대해 궁금해져서 유튜브를 보다가 정리해 두면 좋을 것 같아 정리해보려 한다. DDD Domain-Driven Design(DDD)은 소프트웨어 개발에서 복잡한 도메인(비즈니스 영역)을 이해하기 위한 접근 방법이다. 이는 소프트웨어 시스템의 핵심 영역인 도메인에 집중하여, 도메인의 복잡성을 해결하고 도메인 전문가와 개발자들 사이의 협력을 촉진하는 방법론이다. 이 방법은 Eric Evans가 "Domain-Driven Design: Tackling Complexity in the Heart of Software"라는 책에서 소개하였다. DDD의 개념은 그전에도 다양한 형태로 존재했으며, Eric Evans는 이러한 아이디어들을 정리하여 책으로 발행하였다. 이후 DDD는 소프트..
[Java] Java 8에서 함수형 프로그래밍이 도입된 이유
CS 공부를 하고 있는데 Stream은 함수형 프로그래밍이란 것을 알게 되었다. 그때 든 생각이 어 왜 자바는 명령형 프로그래밍인데 Stream은 함수형 프로그래밍이지?라는 궁금증이 들어서 찾아보았다. 그럼 일단 명령형 프로그래밍부터 알아보자 명령형(Imperative) 프로그래밍 명령형 프로그래밍이란 프로그램의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다. 이 패러다임에서는 프로그램의 상태를 변경하기 위해 명령어를 사용하며, 명령문이 순차적으로 실행되면서 프로그램의 상태가 변화한다. 쉽게 설명하자면, 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이라고 볼 수 있다. 명령형 프로그래밍에서는 프로그램이 수행해야 할 작업을 명시적으로 기술하며, 명령문의 순서에 따라..
프로젝트 패키지 구조는 어떻게 나누는게 좋을까
어떻게 구조를 나눌까 고민하다 작은 프로젝트는 굳이 패키지를 디테일하게 나눌 필요가 없을 것 같은데?라는 생각이 들어 어떤 식으로 나누면 좋을지 찾아보았다. 처음 찾아본 글은 인프런에서의 질문에 대한 김영한 님의 답변이였다. 정답은 없다고 하셨다. 프로젝트를 진행할 때마다 어떤 식으로 나누고 시작하면 좋을지 해당 프로젝트에는 어떤식으로 나누는 게 좋을지 고민하신다고 한다. 현재 프로젝트의 상황과 규모에 따라서, 거기에 맞는 유지보수하고 확장하기 쉬운 구조가 있기 때문이다. 그러면 어떤 방식으로 나누는 방법이 있는지 알아보자. 패키지 구성은 크게 레이어 계층형, 도메인형 이렇게 2가지 유형이 있다. 계층형 └── src ├── main │ ├── java │ │ └── com │ │ └── example ..
[Java] copyOf(), copyOfRange(), arrayCopy()
배열을 복사하기 위해 for문을 사용하다 시간초과가 떠서 다른 방법을 찾다가 알게되었다. copyOf(), copyOfRange(), arrayCopy() 는 배열을 복사하는 방법이다. copyOf() copyOf() 메서드는 java.util.Arrays 클래스에 포함된 배열 복사 메서드이다. java.util 패키지에 포함되어 있으므로 Arrays의 메서드들을 사용하기 위해서는 import가 필요하다. import java.util.Arrays;지정한 배열을 인덱스 0부터 원하는 길이만큼 복사한다. 원본 배열이 입력한 길이보다 클 경우 입력한 길이 이후의 인덱스는 제거되어 copy 되고, 원본 배열이 입력한 길이보다 작을 경우 원본 배열에서 존재하지 않는 인덱스 이후의 값은 배열의 타입 기본값으로 초..