1. 좋은 코드는 어떤 코드일까? [ 1. 이야기하는 코드 ] 과거에 수능을 치르던 시절, 국어 영역 김동욱 선생님은 좋은 지문이라면 부족함이 있는 문장 뒤에 부연 설명이 있어야 한다는 얘기를 하셨습니다. 예를 들어 다음과 같은 문장을 우리가 읽었다고 합시다. 망나니 개발자는 오늘도 일을 하러 간다. 위의 문장은 상당히 함축적이기 때문에, 우리가 위의 문장을 읽었다면 당연히 다음과 같은 의문이 생길 것입니다. 어떤 일을 하러 가는데? 혹은 직업이 뭔데? 그리고 좋은 지문이라면 위의 문장에 이어 다음과 같은 이야기가 있을 것입니다. 망나니 개발자는 오늘도 일을 하러 간다. 그는 N사를 다니는 백엔드 개발자이다. 그는 Java와 Spring 프레임워크를 이용해 개발을 하고 있다. 저는 좋은 코드 역시 좋은 ..
1. 빈(Bean) 등록과 조회 규칙 [ 빈(Bean) 등록 ] Spring은 기본적으로 메소드/클래스의 이름을 Bean의 이름으로 사용한다. @Bean public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } 하지만 개발자가 직접 빈의 이름을 부여할 수도 있다. @Bean("fixDiscountPolicy") public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } @Bean("rateDi..
1. 디미터의 법칙(Law of Demeter) [ 디미터의 법칙(Law of Demeter) 이란? ] 디미터의 법칙은 “Object-Oriented Programming: An Objective Sense of Style” 에서 처음으로 소개되었다. Demeter라는 프로젝트를 진행하던 개발자들은 어떤 객체가 다른 객체에 대해 지나치게 많이 알다보니, 결합도가 높아지고 좋지 못한 설계를 야기한다는 것을 발견하였다. 그래서 이를 개선하고자 객체에게 자료를 숨기는 대신 함수를 공개하도록 하였는데, 이것이 바로 디미터의 법칙이다. 즉, 디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다는 것을 의미하며, 이러한 이유로 Don’t Talk to Strangers(낯선 이에게 말하지 ..
1. HTTP 상태 401(Unauthorized) vs 403(Forbidden) 차이 [ HTTP 상태 401(Unauthorized) 이란? ] HTTP 상태 중 401(Unauthorized)는 클라이언트가 인증되지 않았거나, 유효한 인증 정보가 부족하여 요청이 거부되었음을 의미하는 상태값이다. 즉, 클라이언트가 인증되지 않았기 때문에 요청을 정상적으로 처리할 수 없다고 알려주는 것이다. 401(Unauthorized) 응답을 받는 대표적인 경우는 로그인이 되어 있지 않은 상태에서 무언가 요청을 하는 경우이다. 예를 들어 어떤 쇼핑몰 사이트에 로그인을 하지 않았는데 나의 결제 내역과 같은 정보를 달라고 하면 401(Unauthorized)를 반환받게 될 것이다. 이와 많이 혼동되는 HTTP 상태로..
이번에는 Spring 기반의 웹 애플리케이션에서 테스트를 작성하는 방법에 대해 알아보도록 하겠습니다. 1. Mockito 소개 및 사용법 [ Mockito란? ] Mockito는 개발자가 동작을 직접 제어할 수 있는 가짜 객체를 지원하는 테스트 프레임워크이다. 일반적으로 Spring으로 웹 애플리케이션을 개발하면, 여러 객체들 간의 의존성이 생긴다. 이러한 의존성은 단위 테스트를 작성을 어렵게 하는데, 이를 해결하기 위해 가짜 객체를 주입시켜주는 Mockito 라이브러리를 활용할 수 있다. Mockito를 활용하면 가짜 객체에 원하는 결과를 Stub하여 단위 테스트를 진행할 수 있다. 물론 프레임워크 도구가 필요없다면 사용하지 않는 것이 가장 좋다. [ Mockito 사용법 ] 1. Mock 객체 의존성..