전체글

Controller의 흐름이 길어져 UseCase로 분리를 시도했다가 시간이 많이 드는 경험을 했다.UseCase와 Controller의 역할을 명확히 구분하고, 어느 때에 어떻게 분리하면 좋을 지에 대해 정리해보려 한다.Controller의 역할은 무엇인가?"입력을 받고, 도메인/유스케이스를 호출하고, 출력한다."- 계산하지 않는다.- 규칙을 판단하지 않는다.- 상태를 변경하지 않는다.Controller가 해도 되는 것- 사용자 입력 요청- 입력값을 객체로 변환- 도메인/ 서비스/ 유스케이스 호출- 결과 출력public void run() { String rawAmount = inputView.askAmount(); Amount amount = new Amount(rawAmount); ..
테스트 코드 기본 개념을 중심으로 읽기 좋은 테스트, 유지보수하기 쉬운 테스트를 작성하기 위한 기준을 정리해보았다.1. Given / When / Then 구조로 테스트 작성하기테스트는 스토리 읽듯 이해하기 쉽게 작성하는 것이 좋다.이를 가장 잘 표현하는 구조가 Given / When / Then 패턴이다.Given- 테스트 전제 조건을 준비하는 단계- 테스트 환경 준비 (입력 값, 필요한 객체 생성 등)When- 테스트 대상 메서드 "하나"를 호출- 행위를 수행하는 단계Then- 결과를 검증하는 단계- 반환값, 상태 변화, 객체 간 상호작용 검증원칙- 한 테스트에서 행위는 하나만!- 검증은 의미 단위별로 여러 개 가능 ⭐️테스트는 코드의 흐름이나 내부 로직을 따라가는 것이 아니라, 주어진 조건에서 메서..
·CS
스레드(Thread)스레드 : 프로세스 내의 실행 흐름. 하나의 프로세스는 여러 개의 스레드로 구성될 수 있다.스레드는 개별 stack을 가진다.Code,Data,Heap 영역은 프로세스 내에서 공유한다.데이터 영역과 힙 영역을 통해 데이터 교환(통신)이 가능하다.실행 상태(Ready, Running, Blocked)를 가지며 상태가 변할 때마다 Context Switching이 발생한다.현대 운영체제는 대부분 스레드를 스케줄링 단위로 사용한다.스레드의 Context Switching은 레지스터와 스택 정보만 저장, 복원하면 된다.프로세스 간 컨텍스트 스위칭보다 빠르게 실행된다.스레드 특징1) 스레드마다 독립적인 스택을 가진다.스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소 값 및 함수 내에서 선언하..
📍 디버깅이란?정의: 프로그램의 오류(버그)를 찾아내고 수정하는 과정디버거(Debugger): 코드를 한 단계씩 실행하며 변수 값, 실행 흐름, 메서드 호출 관계(Call Stack) 등을 분석할 수 있는 도구IntelliJ IDEA에는 내장 디버거가 포함되어 있다📍 브레이크포인트 (Breakpoints)브레이크 포인트 : 프로그램 실행을 잠시 멈추게 하는 표시 (중단점)개발자가 코드의 특정 라인에 "여기서 잠시 멈춰!" 라고 표시해두는 것이다 🧩브레이크 포인트 역할 1. 코드 실행을 일시 중지지정한 위치까지 프로그램을 실행하고, 해당 줄에서 멈춤이후 Step Over, Step Into, Step Out 등으로 한 단계씩 실행 가능 2. 변수 상태 확인멈춘 시점에서 각 변수의 값, 객체 필..
데이터 접근 기술 종류1. SQLMapperJdbcTemplateMyBatis 2. ORM 관련 기술JPA, Hibernate스프링 데이터 JPAQuerydsl SQLMapper 주요 기능개발자가 SQL을 작성 → 해당 SQL 결과를 객체로 매핑해준다.JDBC를 직접 사용할 때 발생하는 중복을 제거해주고, 여러가지 편리한 기능을 제공한다. ORM 주요 기능기본적인 SQL은 JPA가 대신 작성해준다.개발자는 저장하고 싶은 객체를 자바 컬렉션에 저장하고 조회하듯이 사용하면, ORM 기술이 해당 객체를 데이터베이스에 저장하고 조회해준다.JPA는 인터페이스이고, Hibernate는 그 구현체이다.스프링 데이터 JPA, Querydsl은 JPA를 더 편리하게 사용할 수 있도록 도와준다. DTO (data tran..
sejinezy
sejinezy