[모던 자바 인 액션] Chapter 2 | 동작 파라미터화 코드 전달하기
·
Backend
2.0 동작 파라미터화 간보기 아직 어떻게 실행할 것인지 결정하지 않은 코드 블록자주 바뀌는 요구사항에 효과적으로 대응할 수 있음 2.1 변화하는 요구사항 대응하기녹색 사과 필터링// filterApplesByColor(List inventory) 함수 내부if (GREEN.equals(apple.getColor())) { result.add(apple);}근데 만약 녹색 사과 말고 빨간 사과도 필터링하고 싶다면?메서드를 복제해서 빨간 사과 전용 메서드를 만든다⇒ 거의 비슷한 코드가 반복 존재한다면 그 코드를 추상화한다.색을 파라미터화// filterApplesByColor(List inventory, Color color) 함수 내부if (apple.getColor().equals(color)) ..
[DDD] Domain Driven Design 실습 - java
·
Backend
📋 미션 목록 1-1MoneyBigDecimal amount + Currency 필드 / 음수 금지 (compact constructor 검증) / 정적 팩토리 krw(long won) / isPositive() 메서드1-2CardNumber숫자 16자리(\d{16})만 허용 / masked() — 첫 4자리 + 가운데 마스킹 + 마지막 4자리1-3PaymentStatusString "PENDING"/"PAID"/"REFUNDED" → enum으로 변경2Payment생성자 (orderId, Money, CardNumber) → PENDING으로 시작 / pay() PENDING→PAID + paidAt 기록 / refund() PAID→REFUNDED / 잘못된 상태 전이 시 IllegalStateEx..
[DDD] Domain Driven Design 기초
·
Backend
1. 우리가 흔히 짜는 코드의 문제 Anemic Domain Model (빈약한 도메인 모델)Order 클래스를 열어보면 필드와 getter/setter밖에 없음. 즉 데이터 컨테이너(DTO)일 뿐, "주문은 어떻게 행동하는가"에 대한 로직이 전혀 없음.본질적으로 객체지향이 아니라 절차지향임. 데이터는 객체에, 로직은 서비스에 분리되어 있으니까.Martin Fowler가 'Anti-pattern'이라고 명시적으로 말한 패턴임.Fat Service (뚱뚱한 서비스)모든 비즈니스 로직이 OrderService로 몰림. 한 메서드가 수백 줄, 클래스가 수천 줄까지 자라남.트랜잭션 시작 -> 검증 -> 계산 -> 외부 호출 -> 상태 변경 -> 저장이 한 메서드 안에 다 들어있음.결과적으로 무엇이 비즈니스 규칙..
[AI·SW 마에스트로] 17기 합격 후기
·
AI·SW 마에스트로
AI·SW 마에스트로 서울센터 17기에 합격했다!!! 1차 - 서류 전형, 2차 - 1차 코딩테스트, 3차 - 2차 코딩테스트, 4차 - 심층면접의 과정을 거쳐 합격하게 되어서,기록해두면 소마를 준비하시는 분들께도, 미래의 나에게도 도움이 많이 될 것 같아 후기를 써보게 되었다! 서류전형서류 전형은 필수 2문항 선택 1문항이었고, 아래와 같았다. 1. (*필수) [자기소개] AI 및 SW분야의 전문성을 키우기 위해 몰입했던 경험과 도전이 무엇인지, 또한 이러한 성장과정을 통해 얻은 배움은 무엇인지를 서술하여 주시기 바랍니다.(최소 400자, 최대 1000자 입력가능)2. (*필수) [연수계획서] AI·SW마에스트로 과정 참여를 통해 어떠한 프로젝트를 수행하고 싶은가요? 해당 프로젝트를 수행하기 위한 계..
[Git/GitHub] 협업 초보자를 위한 Git/GitHub 첫 사용법!
·
카테고리 없음
이번 UMC 9기에 운영진을 맡게 되면서 협업이 처음인 동아리원들을 위해 원디랑 깃/깃허브 미미나를 준비해봤다!준비하며 정리했던 내용들을 아래 작성 후 마지막에 미미나 후기를 짧게 써보겠다!! 1. 깃(Git)과 깃허브(GitHub) 관계Git 이란?Git은 분산 버전 관리 시스템(DVCS)으로, 파일의 변경 이력을 추적하고 여러 사람과 협력하여 작업할 수 있도록 돕는 도구이다.Git을 사용하면 프로젝트의 소스 코드나 문서 등의 변화를 기록하고, 언제든지 과거의 특정 시점으로 되돌릴 수 있다.또한, 분산 저장소를 기반으로 하기 때문에, 모든 사용자는 프로젝트의 전체 히스토리를 로컬에 저장하고 있어 인터넷 연결 없이도 작업이 가능합니다. GitHub란?GitHub는 Git을 기반으로 한 웹 호스팅 서비스로..
[BOJ/Python] 2211번: 네트워크 복구 | 다익스트라 알고리즘
·
Program Solving/Python
https://www.acmicpc.net/problem/2211 문제N(1 ≤ N ≤ 1,000)개의 컴퓨터로 구성된 네트워크가 있다. 이들 중 몇 개의 컴퓨터들은 서로 네트워크 연결이 되어 있어 서로 다른 두 컴퓨터 간 통신이 가능하도록 되어 있다. 통신을 할 때에는 서로 직접 연결되어 있는 회선을 이용할 수도 있으며, 회선과 다른 컴퓨터를 거쳐서 통신을 할 수도 있다.각 컴퓨터들과 회선은 그 성능이 차이가 날 수 있다. 따라서 각각의 직접 연결되어 있는 회선을 이용해서 통신을 하는데 걸리는 시간이 서로 다를 수 있다. 심지어는 직접 연결되어 있는 회선이 오히려 더 느려서, 다른 컴퓨터를 통해서 통신을 하는 것이 더 유리할 수도 있다. 직접 연결되어 있는 회선을 사용할 경우에는 그 회선을 이용해서 통..
[BOJ/Python] 18223번: 민준이와 마산 그리고 건우 | 다익스트라 알고리즘
·
Program Solving/Python
https://www.acmicpc.net/problem/18223 문제종강을 맞은 민준이는 고향인 마산으로 내려갈 계획을 짜고 있었다. 늘 그랬듯, 마산으로 갈 버스를 예약하려던 순간 민준이는 집으로 가는 다른 방법이 떠올랐다. 그것은 직접 지도를 보고 고향으로 가는 가장 짧은 길을 찾는 것이다.그때, 먼저 고향으로 내려갔던 친구인 건우에게 연락이 왔다. 건우는 고향으로 내려가던 중 알 수 없는 일에 휘말려 외딴곳에 혼자 남겨지게 되었다. 건우는 유일한 구세주인 민준이에게 도움을 청한 것이었다. 그러나 마산의 남자인 민준이에게는 마산이 먼저였다. 민준이는 처량한 건우를 무시한 채 고향으로 떠나려고 했지만, 만약 고향으로 가는 길에 건우가 있다면 겸사겸사 도움을 줄 수 있을 것 같았다.지도는 양방향 그래..
[BOJ/Python] 4963번: 섬의 개수 | 플러드 필
·
Program Solving/Python
https://www.acmicpc.net/problem/4963 문제정사각형으로 이루어져 있는 섬과 바다 지도가 주어진다. 섬의 개수를 세는 프로그램을 작성하시오.한 정사각형과 가로, 세로 또는 대각선으로 연결되어 있는 사각형은 걸어갈 수 있는 사각형이다. 두 정사각형이 같은 섬에 있으려면, 한 정사각형에서 다른 정사각형으로 걸어서 갈 수 있는 경로가 있어야 한다. 지도는 바다로 둘러싸여 있으며, 지도 밖으로 나갈 수 없다. 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다.둘째 줄부터 h개 줄에는 지도가 주어진다. 1은 땅, 0은 바다이다.입력의 마지막 줄에는 0이 두 개 주어진다..
[BOJ/Python] 2630번: 색종이 만들기 | 분할정복
·
Program Solving/Python
https://www.acmicpc.net/problem/2630 문제아래 과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은 하얀색으로 칠해져 있거나 파란색으로 칠해져 있다. 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다.전체 종이의 크기가 N×N(N=2k, k는 1 이상 7 이하의 자연수) 이라면 종이를 자르는 규칙은 다음과 같다.전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 의 I, II, III, IV와 같이 똑같은 크기의 네 개의 N/2 × N/2색종이로 나눈다. 나누어진 종이 I, II, III, IV 각각에 대해서도 앞에서와 마찬가지로 모두..
[BOJ/Python] 1167번: 트리의 지름 | DFS
·
Program Solving/Python
https://www.acmicpc.net/problem/1167 문제트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 프로그램을 작성하시오. 입력트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 매겨져 있다.먼저 정점 번호가 주어지고, 이어서 연결된 간선의 정보를 의미하는 정수가 두 개씩 주어지는데, 하나는 정점번호, 다른 하나는 그 정점까지의 거리이다. 예를 들어 네 번째 줄의 경우 정점 3은 정점 1과 거리가 2인 간선으로 연결되어 있고, 정점 4와는 거리가 3인 간선으로 연결되어 있는 것을..