clean code (15) 썸네일형 리스트형 [클린코드] CHAP 12 창발성 CHAPTER 12 창발성 (Emergence) 하위 계층에는 없는 특성이나 행동이 상위 계층 (전체 구조) 에서 자발적으로 돌연히 발생하는 현상 창발적 설계 단순한 4가지를 반복하다 보면 전체적으로 깨끗한 코드가 만들어진다. 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. (실용적 관점에서 타협한다.) 모든 테스트를 실행한다. 테스트를 작성할수록 설계 품질이 좋아진다. 중복을 없앤다. 기존의 코드를 최대한 재활용한다. 각 메서드를 따로 구현하지 않고 최대한 활용한다. Template Method 패턴 알고리즘의 구조를 상위 클래스의 메서드에서 정의하고, 하위 클래스에 자신에 맞게 세부 알고리즘을 정의한다. 공통된 알고리즘을 템플릿 메서드에 담고.. [클린코드] CHAP 11 관심사 분리 패턴들 CHAPTER 11 관심사 분리 패턴들 construction (생성) 과 use (사용) 은 아주 다르다 소프트웨어 시스템은 어플리케이션 객체를 제작하고 의존성을 서로 연결하는 준비과정과 준비과정 이후에 이어지는 런타임 로직을 분리해야 한다 객체의 생성과 객체를 사용하는 부분을 분리해야 한다 시작에 대한 관심사 분리 객체의 생성은 시작단계에서, 비즈니스 로직은 객체를 사용하는데 집중한다 시작 단계는 모든 어플리케이션이 풀어야할 관심사이다. main 함수에서 시스템에 필요한 객체를 생성한 후 어플리케이션에 넘긴다. 어플리케이션은 그저 만들어진 객체를 사용한다. 모든 객체가 잘 생성되었다고 가정하고, 객체를 이용한 개발에 집중할 수 있다. 요청에 대한 관심사 분리 Spring 프레임 워크를 통해 요청에 대.. [클린코드] CHAP 10 클래스 클래스 잘 설계하기 캡슐화되어야 한다 객체의 실제 구현을 외부로부터 감추는 방식 클래스를 개발할 때 기본적으로 구현을 감추고, 외부 객체와 상호작용하는 부분만 노출한다 외부의 잘못된 사용을 방지한다 경계에서 배웠던 Map 과 동일한 개념 public class Stack { private int topOfStack = 0; private List element = new LinkedList(); public List getElements() { return elements; } public int size() { return topOfStack; } public void push() throws PoppedWhenEmpty { if (topOfStack == 0) { throw new PoppedWhen.. 이전 1 2 3 4 5 다음