애플리케이션 실행에는 무수히 많은 변수가 존재합니다. 이러한 변수 상황을 효율적으로 대처하기 위해 테스트의 중요성은 시간이 지날수록 꾸준히 증가하였고 지금은 TDD라는 용어까지 나오며 테스트가 필수적으로 되었습니다. 형식 맞추기로 테스트를 급하게 작성해서는 안 되고 제대로 된 테스트 케이스를 작성할 수 있도록 테스트에 많은 시간을 투자해야 합니다. TDD 법칙 세 가지 첫째. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 깨끗한 테스트 코드 유지하기 지저분한 테스트 코드는 개발 비용을 증가시킵니다. 핵심 로직에 투자해야 할 시간을 ..
프로젝트의 하나로 앱 개발을 진행할 때 앱에 필요한 모든 소프트웨어를 직접 개발하지는 않았습니다. 규격화 되어 있는 오픈 소스를 이용하고 다른 팀의 API를 사용하고 필요에 의해 비용을 지불하고 라이선스를 획득하여 사용하기도 합니다. 외부의 코드를 사용하게 되면 내부의 코드와 적절히 조화를 이루도록 하는 것이 중요한 부분인데 이번 장에서는 이러한 경계를 깔끔하게 처리하는 기법과 기교를 설명하고 있습니다. 외부 코드 사용하기 코드 제공자는 적용성과 범용성을 넓히기 위해 최대한 노력합니다. 하지만 이러한 적용성과 범용성이 단점으로 다가오는 상황도 존재합니다. 너무 많은 기능을 제공해버리면 클라이언트에서 필요하지 않은 기능까지 제공해버리게 됩니다. 이를 적절히 캡슐화하여 기능을 제한하면 클라이언트로서 편할 것..
무엇이 잘못된다면 이를 바로 잡을 책임은 프로그래머에게 달려 있습니다. 그렇기에 깨끗한 코드와 오류 처리는 밀접한 관련이 있습니다. 하지만 오류 처리로 인해 중요한 로직이 가려지게 된다면 이는 제대로 된 오류 처리라 부를 수 없습니다. 이번 장을 통해 우아하고 고급스럽게 오류 처리하는 방법과 고려 사항에 대해 정리해보고자 합니다. 오류 처리를 생각했을 때 바로 떠오르는 방법들도 있습니다. 오류 코드보다 예외를 사용하라 Try-Catch-Finally 문부터 작성하라 예외에 의미를 제공하라 미확인 예외를 사용하라 확인된 예외는 컴파일 단계에서 확인되며 반드시 처리되어야 하는 예외입니다. 미확인 예외는 런타임 시 확인되며 명시적인 처리를 강제하지 않는 예외입니다. 확인된 예외는 안정적인 소프트웨어를 위해 사..
JPA를 공부할 때 영속성 컨텍스트만큼 중요한 개념 중 하나가 연관관계입니다. 객체는 참조를 사용해 다른 객체와 연관관계를 가지고 연관된 객체를 조회합니다. 하지만 테이블은 외래 키를 사용해 다른 테이블과 연관관계를 가지고 조인을 통해 연관된 테이블을 조회합니다. 객체가 테이블처럼 외래 키를 가지도록 설계한다면 객체 지향적인 설계를 포기해야 합니다. 이러한 패러다임의 불일치를 중간에서 해결해 줄 매개체가 필요한데 JPA가 이 역할을 수행합니다. 객체 그래프 탐색 다음과 같은 객체 연관관계가 존재한다고 가정할 때, 연관되어 있으면 참조를 통해 탐색이 보장되어야 합니다. 이를 객체 그래프 탐색이라고 합니다. 아래의 코드의 신뢰성이 보장되어야 함을 의미합니다. Professor professor = unive..
객체지향 프로그래밍을 한다면 객체를 객체답게 볼 수 있어야 합니다. 또한 원하는 기능을 개발하기 위해 올바른 자료구조를 선택할 수 있어야 합니다. 이번 장을 통해 객체와 자료 구조에 대해 조금 더 다가가 보고자 합니다. 자료 추상화 public class Point { private double x; private double y; public double getX() { return this.x; } public double getY() { return this.y; } public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } } 단순히 필드를 드러내지 않는다고 해서 추상화가 이루어진 것은 아닙니다. 위의 ..