이번에는 여러 개발 서적들 및 실무 경험 그리고 시행 착오 등을 겪으면서 얻은 테스트 주도 개발 방법에 대해 소개해보고자 합니다. 이번 포스팅에서는 먼저 단위 테스트와 중요성 그리고 단위 테스트를 바탕으로 하는 TDD는 어떻게 하는 것인지 이론적으로 소개해보고자 합니다. 이어지는 포스팅들에서 실제로 테스트에 주도되는 개발을 해볼 것인데, 많은 분들에게 도움이 되기를 바라겠습니다:) 1. 단위 테스트의 중요성과 좋은 단위 테스트의 특징 [ 단위 테스트(Unit Test)를 작성해야 하는 이유 ] 단위 테스트를 작성해야 하는 이유는 정말 너무 많다. 그 중에서 몇 가지 핵심적인 이유들을 작성하면 다음과 같다. 코드를 수정하거나 기능을 추가할 때 수시로 빠르게 검증 할 수 있다. 리팩토링 시에 안정성을 확보할..
1. 변경을 최소화하는 개발, 관심사의 분리와 변하는 것과 변하지 않는 것의 분리 [ 요구사항의 변경 ] 시간이 지나면서 요구사항은 결국 변하게 될 것이고, 우리는 미래의 변화에 대응할 수 있는 설계를 해야 한다. 미래의 변화에 대응할 수 있는 설계를 해야하는 이유는 미래에 소요될 유지보수 시간을 줄이기 위함이다. 설계의 퀄리티에 따라 누군가는 수정사항을 반영하는데 하루가 넘는 시간이 소요될 수 있는 반면, 다른 누군가는 이러한 작업을 단 몇 시간 내에 끝낼 수도 있다. 이러한 이유로 우리는 변경이 일어날 때 필요한 작업을 최소화하고, 그 변경이 다른 곳에 영향을 미치지 않도록 해야 한다. 변경을 최소화하기 위해서는 분리와 확장을 고려한 설계를 해야 한다. 변경에 대한 요청은 한 번에 하나의 관심사항에 ..
1. 싱글톤이 안티 패턴이 될 수 있는 이유 [ 싱글톤이 안티 패턴이 될 수 있는 이유 ] 우리는 싱글톤패턴을 구현할 때 다음과 같이 구현을 한다. 다음은 자바 언어를 이용해 싱글톤 패턴을 구현하는 전형적인 코드이다. public class Person { private static Person instance; private Person() { throw new IllegalStateException("Private Constructor"); } public static Person getInstance() { if (instance == null) { instance = new Person(); } return instance; } } 싱글톤 패턴은 전역 상태(Global State)로 이용할 수 있..
1. 좋은 코드는 어떤 코드일까? [ 1. 이야기하는 코드 ] 과거에 수능을 치르던 시절, 국어 영역 김동욱 선생님은 좋은 지문이라면 부족함이 있는 문장 뒤에 부연 설명이 있어야 한다는 얘기를 하셨습니다. 예를 들어 다음과 같은 문장을 우리가 읽었다고 합시다. 망나니 개발자는 오늘도 일을 하러 간다. 위의 문장은 상당히 함축적이기 때문에, 우리가 위의 문장을 읽었다면 당연히 다음과 같은 의문이 생길 것입니다. 어떤 일을 하러 가는데? 혹은 직업이 뭔데? 그리고 좋은 지문이라면 위의 문장에 이어 다음과 같은 이야기가 있을 것입니다. 망나니 개발자는 오늘도 일을 하러 간다. 그는 N사를 다니는 백엔드 개발자이다. 그는 Java와 Spring 프레임워크를 이용해 개발을 하고 있다. 저는 좋은 코드 역시 좋은 ..
1. 디미터의 법칙(Law of Demeter) [ 디미터의 법칙(Law of Demeter) 이란? ] 디미터의 법칙은 “Object-Oriented Programming: An Objective Sense of Style” 에서 처음으로 소개되었다. Demeter라는 프로젝트를 진행하던 개발자들은 어떤 객체가 다른 객체에 대해 지나치게 많이 알다보니, 결합도가 높아지고 좋지 못한 설계를 야기한다는 것을 발견하였다. 그래서 이를 개선하고자 객체에게 자료를 숨기는 대신 함수를 공개하도록 하였는데, 이것이 바로 디미터의 법칙이다. 즉, 디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다는 것을 의미하며, 이러한 이유로 Don’t Talk to Strangers(낯선 이에게 말하지 ..