테스트가 어려운 코드 영역 구분주문 메서드 작성키오스크 주문은 10시 ~ 22시 사이로 가능하다. 그 시간 외에는 IllegalArgumentException 예외가 발생한다.@Getterpublic class CafeKiosk { public static final LocalTime SHOP_OPEN_TIME = LocalTime.of(10, 0); public static final LocalTime SHOP_CLOSE_TIME = LocalTime.of(22, 0); private final List beverages = new ArrayList(); public Order createOrder() { LocalDateTime currentDateTime = Loc..
1. 추상화추상이란 사물을 정확하기 이해하기 위해서 사물이 가진 여러 가지 측면 가운데서 특정한 측면만을 가려내어 포착하는 것이다. 즉, 핵심이 되는 측면만을 가려내고 나머지 측면은 버린다는 얘기와 같다.추상화 전과 후를 비교해 보자.추상화 전 추상화 후 추상화하기 전에는 질문에 대한 구체적인 답변이 포함되어 있다. 그러나 인간은 추상화 능력이 매우 뛰어나다. 추상화된 답변만 보고도 구체적인 내용에 대해서 예상할 수 있다. 마치 메서드 이름만 보고도 세부 내용을 어림잡아 생각할 수 있다.적절한 추상화는 복잡한 데이터와 로직을 단순화하여 이해하기 쉽도록 해준다.1-1. 추상화 방법적절한 추상화를 하기 위해서는 도메인 문맥 내에서 중요한 핵심 개념만 남겨서 표현하는 것이다. 중요한 정보는 가려내어 남기고, ..
1. 클린코드는 왜 필요한가?클린 코드의 주목적은코드가 잘 읽히기 위해 필요하다. 특히나 협업 프로젝트라면 다른 사람이 내가 작성한 코드를 기반으로 작업을 해야 할 수 있다. 이때, 나만 알아볼 수 있도록 또는 읽기 어렵게 작성한다면 추가적인 비용이 소모된다. 추가적인 비용이란 코드 작업 외에 코드를 이해하기 위한 시간이 소모됨을 의미한다. 심지어 시간이 지나고 본인이 작성한 레거시 코드를 보았을 때, 본인마저 이해를 못 하는 경우가 있다. 따라서 읽기 좋은 코드를 작성하여 코드를 이해하는데 발생하는 비용을 최대한 줄이는 게 좋다. 아래 그래프를 보면 다른 개발자 코드 작업하기의 비중이 8%이다. 다른 개발자의 코드를 작업하기 위해서는 먼저 작성된 코드를 이해해야 한다. 이 개발자가 스파게티 코드를 작성..
HTTP 프로토콜HTTP 프로토콜은 클라이언트-서버 모델로써, 클라이언트가 요청을 보내면 서버가 응답을 내리는 구조이다. HTTP의 특징으로는 stateless(무상태)와 connectionless(비연결성)이다. Stateless(무상태)서버는 클라이언트의 이전 요청에 대해서 기억하지 않는다. 즉, 서버는 응답을 내려준 클라이언트의 요청에 대해서 기억하지 않는다는 것이다.ex) 사용자가 로그인 페이지에서 로그인을 했더라도 다른 페이지로 이동하면 로그인이 유지되지 않는다.상태를 유지하기 위해서는 쿠키(Cookie), 세션(Session), 토큰(Token) 등을 사용하여 클라이언트와 서버 간의 상태를 기억할 수 있다.Connectionless(비연결성)HTTP는 TCP(Transmission Contr..
문제 시나리오CorsConfig 클래스에 작성된 domain 필드가 존재한다.@Value 애너테이션을 사용하여 application.yml에 작성한 값을 domain 필드에 주입한다.application.yml... 생략server: domain: ${SERVER_DOMAIN}CorsConfig@Configurationpublic class CorsConfig { @Value("${server.domain}") static String domain; public static CorsConfigurationSource corsConfiguration() { CorsConfiguration configuration = new CorsConfiguration(); ..