구현 선행 작업
factory method 패턴
-> 의존성을 최소한으로 줄이기 위해. 객체의 생성과 사용을 분리하자 (Spring framework의 DI, IoC)
Controller와 Business Layer의 분리
-> 인터페이스와 상속을 이용.
AOP
-> 공통 모듈과 업무 로직 처리 코드를 분리하자.
구현 상세 설계 작업
추상화 (Abstract, Interface class)
-> 외부 요청에 대한 스펙만을 정의.
-> 이는 다른 클래스(implements class)에서 실제 구현을 담당
-> 내부적으로 변경 작업이 있더라도, 클라이언트나 이 모듈을 사용하는 다른 곳에서의 수정을 최소화할 수 있다.
-> 다른 모듈과의 완충 작용
캡슐화/정보은닉
-> 속성과 행위를 하나로 묶어 캡슐화,
-> 속성을 변경하는 부분은 상속관계의 객체들만 가능하도록하여 외부에서 접근하지 못하도록 은닉화
상속 & 다형성
-> 자식클래스가 부모 클래스의 속성과 매소드를 상속받아 반복되는 코드를 최소화
-> 클래스를 구조화
클래스 분할 & 배치
-> 가능한 작게 (단일 책임 원칙 SRP)
-> 일관성 있는 추상화
-> 속성들과 클래스의 캡슐화 (같은 개념 선상의 것들에 대해 (높은 응집도))
-> 속성들과 내부 클래스의 정보 은닉화 (protected, private 로 선언)
-> 적절한 상속 (다향성)
-> 잦은 변경 부분은 분리 (다른 곳에 영향을 최소화)
-> 느슨한 결합을 유지 (인터페이스 클래스)
/*
팩토리 패턴, 어뎁터 패턴, 인터페이스, 상속에 대한 실습
*/
주석도 줄여라. 코드만이 유일한 산출물이다.
-> 주석과 코드의 100% 일치는 불가능하다. 주석 만들 시간에 코드에 집중하라
-> 대신, 형상 관리 (commit) 시에 상세히 기술할 것
-> 이름을 잘 지으면 주석은 필요 없다.
-> 개발에 필요한 주석은 테스트와 검증 후에 정리하는 습관을 길러야 할 것
그렇다면 정말 필요한 주석은?
-> 저작권 정보 및 소유권 정보
-> 코드의 구현 의도 사술
-> 개발 시의 주의 사항, 중요 점
-> TODO
-> 공개 API일 경우 javadocs 작성
메소드 작성 시의 유의점
-> 역할을 이해할 수 있는 이름으로 생성
-> 메소드의 목적 달성에 필요한 파라미터만 인자로 받을 것
-> 매개변수는 메서드 내에서 변경하지 않는 것이 원칙
-> 값에 대한 유효성 체크
-> 하드코딩은 제거
-> 변수는 앞단에 선언
메서드의 분할 ( 클린코드 즉, 단순하고 이해하기 쉬운 코드를 위해 인지하기 쉬운 단윌 분할 작업이 필요. )
->Master Method / Sub Methods의 분할
Master Method → Sub Method
↘ ↘ 코드 중복의 최소화
Method → Sub Method → Sub Method
-> 추상화 수준을 일치시킨다.
'Study > 디자인 & 설계' 카테고리의 다른 글
strategy pattern (0) | 2019.08.08 |
---|---|
TDD (0) | 2019.05.25 |