Clean Software

    [디자인 패턴] Iterator(반복자 패턴)

    Iterator 🔔 Intent 기본 표현(목록, 스택, 트리 등)을 노출하지 않고 컬렉션의 요소를 탐색할 수 있습니다. Lets you traverse elements of a collection without exposing its underlying representation (list, stack, tree, etc.). 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴내부구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴 반복자 패턴은 컬렉션을 반복하는 표준 방법을 제공합니다. 정렬된 개체 그룹을 보유하는 클래스 또는 구조체가 있고 "for in" 루프를 사용하여 반복 가능하게 만들고 싶을 때 반복..

    디자인 패턴(Design patterns) - 적절한 디자인패턴 선택방법과 사용법

    적절한 디자인 패턴을 찾기 위한 접근방법 20여개가 넘는 디자인패턴중에서 특정 설계문제를 해결하기위한 적절한 디자인패턴이 무엇인지 찾기란 여간 어려운일이 아닐 것 같아요. 내가 발생한 문제에 적합한 디자인 패턴을 찾기 위한 몇가지 다양한 접근방법이 있습니다. 1. 디자인 패턴이 설계 문제를 해결하는 방법을 고려하자 디자인 패턴이 적절한 객체를 찾고, 객체 세분성을 결정하고, 객체 인터페이스를 지정하고, 디자인 패턴이 설계 문제를 해결하는 다양한 방법을 어떻게 도와주는지 알아야 어떤 패턴을 사용하는것이 좋을지 알수 있습니다. 이전글 참고 2. 디자인 패턴의 존재 의도(Intent) 고려하자 섹션 1.4(8페이지)에는 카탈로그에 있는 모든 패턴의 의도 섹션이 나열되어 있습니다. 각 패턴의 의도를 읽고 문제와..

    테스트 코드 작성을 위한 가이드라인 : FIRST, Right-BICEP, CORRECT

    0. 어떤 테스트를 작성할지 결정 테스트는 보통 반복문 if문 등 조건문을 보는것으로 출발한다. 그 이후 데이트 변형을 고려하고 데이터가 null 혹은 0일경우도 대비한다. 또한 데이터 값은 조건문을 평가하는데 어떤 영향을 주는지 살핀다. 종속적인 조건들은 테스트 하나로 묶을 수 잇다. Junit은 테스트할때마다 새로운 인스턴스를 생성한다.(모든 테스트는 독립적으로 만든다) 1. AAA로 일관성 유지 준비(Arrange) 실행(Act) 단언(Assert) 2. 메서트 테스트가 아닌 동작을 테스트 단위 테스트를 작성할 때는 전체적인 시각에서 테스트를 해야한다. 개별 메서드를 태스트하는것이 아니라 클래스의 종합적인 동작을 테스트해야한다. 3. 테스트 코드와 프로덕션 코드 테스트 코드는 프로덕션 코드에 의존하..

    디자인 패턴(Design pattern) - 객체지향 개발시 발생되는 어떤 문제를 해결해줄까

    디자인 패턴이 설계 문제를 해결하는 방법 디자인 패턴은 개발자(객체 지향 디자이너가) 직면하는 많은 일상적인 문제를 다양한 방식으로 해결해줍니다. 다음은 이러한 문제 중 몇 가지와 디자인 패턴이 이를 해결하는 방법입니다. 1. 적절한 객체(Object)를 찾아줍니다. 객체 지향 프로그램은 객체(Object)로 구성됩니다. 객체는 데이터와 해당 데이터에서 작동하는 프로시저(procedure: 절차)를 모두 패키지화합니다. 프로지서는 일반적으로 메소드(method) 또는 함수(operations)이라고 합니다. 객체는 클라이언트로부터 요청(request)혹은 메시지(message)를 받으면 작업을 수행합니다. 요청은 작업을 실행할 개체를 가져오는 유일한 방법입니다. 작업은 개체의 내부 데이터를 변경하는 유일..