개발공부(173)
-
(6) 1부 화폐예제 - 11,12장 드디어, 더하기
Github 코드보기 11장 모든 악의 근원 하위 클래스 기능을 모두 상위 클래스로 이관해줍니다. 과정에서 코드 의미를 변경하지 않고 하위 클래스에 대한 참조를 상위 클래스에 대한 참조로 변경할 수 있습니다. Money.franc() 변경 12장 드디어, 더하기 서로 다른 통화를 더하는 기능 테스트를 위해 Money 객체와 외부 프로토콜은 같으면서 내부 구조는 두 Money의 합을 나타내는 새로운 객체(imposter)를 만들고자 합니다. Expression은 연산의 결과, Bank는 환율을 적용해 단일통화로 축약하는 객체입니다. 인터페이스가 더 가볍기 때문에 Expression은 인터페이스로 생성해줬습니다. 1 2 3 4 5 6 7 8 @Test public void testSimpleAddition(..
2021.04.09 -
(4) 1부 화폐예제 - 7,8장 객체 만들기
Github 코드보기 7장 사과와 오렌지(같지 않은 둘) 동치성 테스트는 클래스 객체 비교를 통해 같지 않은 지까지 확인해야 합니다. - getclass() 를 사용했습니다. 1 2 3 4 5 public boolean equals(Object object) { Money money = (Money) object; return amount == money.amount && getClass().equals(money.getClass()); } Colored by Color Scripter cs equals() 동치성 비교가 객체 인스턴스 파라미터에 다른 값을 넣어도 같다고 떴습니다. - Dollar, Franc 클래스 필드를 없애고 Money것을 사용하게 했습니다. - Dollar, Franc 클래스 생성..
2021.03.30 -
(3) 1부 화폐 예제 - 3~6장 동질화, 리팩토링
Github 코드보기 3장 모두를 위한 평등 객체 클래스의 equals 메서드는 Junit의 assertEquals와 동질성을 가집니다. - 객체의 반환값으로 동질성을 비교하지 않으면 테스트는 틀립니다. 4장 프라이버시 객체 인스턴스 필드를 사용하는 코드를 줄이면 필드를 private으로 변경할 수 있습니다. 5장 솔직히 말하자면 큰 테스트를 실행하기 전에 작은 테스트를 공략합니다. 테스트 작성단계 1) 테스트 작성. 2) 컴파일되게 하기. 3) 실패하는지 확인하기 위해 실행. 4) 실행하게 만듦. 5) 중복 제거. 4단계까진 속도가 중요하기 때문에 초록 막대를 만들기 위해 훌륭한 설계의 교리(리팩토링)을 어겨도 됩니다. 하지만 5단계 없인 완성된 테스트 코드가 아닙니다. - 중복이 사라지기 전에는 집에..
2021.03.29 -
(4) 2장_스프링 코어(DI, AOP) - Resource 추상화, Message 관리
2장의 마지막 개념 Resource 추상화와 Message 관리입니다. 제 생각엔 중심 개념은 아니지만 사용하면 편리한 라이브러리여서 알아두면 좋을 것 같습니다. Resource 추상화 애플리케이션을 개발할 때 디렉터리나 war 파일, jar 파일 등 이러한 리소스의 위치를 모두 알고 접근해야 하지만 리소스 추상화 기능을 활용하면 구체적인 위치 정보를 직접 다루지 않아도 리소스에 접근할 수 있게 됩니다. classpath를 관리합니다. Resource 인터페이스의 구현 클래스(UrlResource)를 통해 웹 리소스 가져오기 1 2 3 4 5 6 7 8 public void accessResource() throws IOException { Resource greetingResource = new Url..
2021.03.25 -
(2) 1부 화폐 예제 - 1,2장 Money 객체
Github 코드보기 1장 다중 통화를 지원하는 Money 객체 테스트 코드 작성순서 - 애플리케이션 기능들에 진행해야할 테스트 목록을 만듭니다. - 객체보다 테스트를 먼저 만들어야 합니다. 의존성과 중복 스티브 프리만은 테스트 코드의 문제가 의존성이라 했습니다. 의존성은 코드나 테스트 중 한쪽을 수정하면 다른 한쪽도 수정해야 하는 것을 말합니다. 중복은 문제의 징후이며 해결하려면 객체를 이용하는 것이 좋습니다. 중복을 해결하면 의존성도 제거됩니다. one and only one 코드 수정을 통해 다음 테스트도 통과되게 만드는 가능성을 최대화 하는 것입니다. 스텁 구현 메서드의 서명부와 반환 명령만 적는 식으로 해서 호출하는 테스트 코드가 컴파일 될 수 있도록 껍데기만 만들어두는 것을 뜻합니다. 2장 타..
2021.03.23 -
(3) 2장_스프링 코어(DI, AOP) - AOP, SpEL
AOP(관점 지향 프로그래밍) 비즈니스 로직과 관련 없지만 여러 모듈에 걸쳐 공통적이고 반복적으로 처리가 필요한 내용을 횡단 관심사(Cross-Cutting Concern)이라고 합니다. 이를 DRY(Do not Repeat Yourself)대로 분리해서 한 곳으로 모으는 방법을 관점 지향 프로그래밍(AOP)라고 합니다. 예시로 보안, 로깅, 트랜잭션 관리, 모니터링, 캐시처리, 예외처리가 있습니다. AOP 용어 - Aspect : AOP 단위가 되는 횡단 관심사(ex.로그를 출력한다, 예외를 처리한다...등) - Join Point : 횡단 관심사가 실행될 지점이나 시점(정상 종료나 예외 발생)을 말한다. - Advice : 실행되는 코드; 횡단 관심사를 실제로 구현해서 처리하는 부분(Around, B..
2021.03.22