상수보다는 열거형을 사용하자 Enum Class 은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다. Enum Class 의 장점 Enum Class 는 완벽한 싱글톤이다 Thread-safety, Serialization 이 보장된다 기존 코드의 문제점 비즈니스 로직의 코드를 테스트도 만들어서 꼼꼼하게 점검했지만, 깔끔한 코드를 추구하는 스프링 사용자답게 만들어진 코드를 다시 한번 검토해보자. 코드에 중복된 부분은 없는가? 코드가 무엇을 하는 것인지 이해하기 불편하지 않은가? 코드가 자신이 있어야 할 자리에 있는가? 앞으로 변경이 일어난다면 어떤 것이 있을 수 있고, 그 변화에 쉽게 대응할 수 있게 작성되어 있는가? 트랜잭션 트랜잭션 경계설정 데이터베이스는 그 자체로 완벽한 트랜잭션을 지원..
초난감 예외처리 초난감 예외처리 1 try { ... } catch(SQLException e){ }예외를 잡고는 아무것도 하지 않는 코드이다. 예외 발생을 무시해버리고 정상적인 상황인 것처럼 다음 라인으로 넘어가겠다는 분명한 의도가 있는 게 아니라면 연습 중에도 절대 만들어서는 안 되는 코드다. 초난감 예외처리 2 } catch(SQLException e) { System.out.println(e); }초난감 예외처리 3 } catch(SQLException e) { e.printStackTrace(); }예외가 발생하면 화면에 출력해주는데 뭐가 문제일까? 운영서버로 올라가면 콘솔 로그를 누군가가 계속 모니터링하지 않는 한 이 예외 코드는 심각한 폭탄으로 남아 있을 것이다. 예외를 처리할 때 반드시 지..
확장에는 자유롭게 열려 있고 변경에는 굳게 닫혀 있다는 객체지향 설계 핵심 원칙인 개방 폐쇠 원칙 을 다시 한번 생각해보자. 이 원칙은 코드에서 어떤 부분은 변경을 통해 그 기능이 다양해지고 확장하려는 성질이 있고, 어떤 부분은 고정되어 있고 변하지 않으려는 성질이 있음을 말해준다. 다른 목적과 다른 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어주는 것이 바로 개방 폐쇠 원칙 이다. 템플릿이란 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭괴 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 기법이다. 템플릿 메소드 패턴의 적용 템플릿 메소드 패턴은 상속을 통해 기능을 확장해서 사용하..
애플리케이션은 계속 변하고 복잡해져 간다. 그 변화에 대응하는 첫번째 전략이 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IoC/DI 같은 기술이라면, 두 번째 전략은 만들어진 코드를 확신하게 할 수 있게 해주고, 변화에 유연하게 대처할 수 있는 자신감을 주는 테스트 기술이다. 웹을 통한 DAO 테스트 방법의 문제점 보통 웹 프로그램에서 사용하는 DAO의 테스트 하는 방법은 웹 화면을 띄워 폼을 열고, 값을 입력한 뒤 버튼을 눌러 등록한다. 이렇게 웹 화면을 통해 값을 입력하고, 기능을 수행하고, 결과를 확인하는 방법은 가장 흔히 쓰이는 방법이지만, DAO에 대한 테스트로서는 단점이 너무 많다. 그렇다면 테스트를 어떻게 만들어야 이런 문제를 피할 수 있고, 효율적으로 활용할 ..
초난감 DAO @Getter @Setter public class User { String id; String name; String password; }JavaBean 규악을 따르고 사용자 정보를 저장하는 User 클래스를 생성한다. JavaBean 멤버 변수마다 별도의 getter/setter method 가 존재 getter method 는 매개변수가 존재하지 않는다 setter method 는 반드시 하나 이상의 매개변수가 존재한다 construct 는 매개변수가 존재하지 않는다 디폴트 생성자 javaBean 은 파라미터가 없는 default construct 를 갖고 있어야 한다. 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하기 때문에 필요하다 Reflection API란? 마법처럼 클래스의..