소프트웨어가 출시되고 시간이 지나면 지날수록 한 줄의 코드를 변경하는데 높은 비용이 든다는 그래프.비용은 증가하지만, 코드의 변화는 크게 없다는 것을 오른쪽 그래프에서 알 수 있음.코드 분석 시간의 증가코드 변경 시간의 증가Software maintenance is n
절차 지향은 위와 같이 여러 프로시저가 데이터를 공유하는 형태.위와 같은 코드가 있다고 가정.위 코드에서 요구사항이 변경되어 아래와 같은 코드로 변경.여기서 만약 또 한 번 바뀐다면, 코드가 시간이 갈수록 복잡해지고 수정이 어려워진다는 것을 알 수 있다.객체 지향에서는
데이터 + 관련 기능을 묶기객체가 기능을 어떻게 구현했는지 외부에 감추는 것구현에 사용된 데이터의 상세 내용을 외부에 감춤정보 은닉 ( Information Hiding ) 의미 포함외부의 영향 없이 구조를 변경가능하게 해준다.위와 같은 정회원을 판별하는 로직이 있다고
이전 포스트에서 캡슐화를 알아보았으니, 실제 코드를 통해 캡슐화를 연습해보겠습니다.위 코드의 어떤 부분을 어떻게 캡슐화 할 수 있을까요?Tell, Don't Ask 를 생각하면 mem.getVerificationEmailStatus() != 2 와 같이 직접적으로 데이
여러 ( poly ) 모습 ( morph ) 을 갖는 것객체지향에서는 한 객체가 여러 타입을 갖는 것즉 한 객체가 여러 타입의 기능을 제공타입 상속으로 다형성을 구현하위 타입은 상위 타입도 된다데이터나 프로세스 등을 의미가 비슷한 개념이나 의미 있는 표현으로 정의하는
기능 예시클라우드 파일 통합 관리 기능 개발대상 클라우드 : 드롭박스, 박스주요 기능각 클라우드의 파일 목록 조회, 다운로드, 업로드, 삭제, 검색이제 여기에 여러 다른 클라우드를 지원하고 기능(클라우드간 복사)을 추가한다고 해보겠습니다.만약 위와 같이 추상화하지 않은
상속은 상위 클래스의 기능을 재사용, 확장하는 방법으로 사용이 가능하지만..상위 클래스 변경 어려움상위 클래스가 조금만 잘못 변경되어도 다른 하위 클래스가 잘못 동작하게 될 수 있음클래스 증가위와 같이 상속을 사용하면서 하위 클래스가 증가하게 되어, 복잡도가 증가하게
기능은 하위 기능으로 분해위와 같이 암호 변경이라는 기능은 여러 하위 기능으로 분해될 수 있다.기능은 곧 책임 \- 분리한 각 기능을 알맞게 분배이처럼 각각의 하위 기능들을 책임을 가질 클래스에 알맞게 분배해야한다.위 코드를 보면, MemebeRepository,
기능 구현을 위해 다른 구성 요소를 사용하는 것의존의 예 : 객체 생성, 메서드 호출, 데이터를 사용의존은 변경이 전파될 가능성을 의미의존하는 대상이 바뀌면 바뀔 가능성이 높아짐예 : 호출하는 메서드의 파라미터가 변경예 : 호출하는 메서드가 발생할 수 있는 익셉션 타입
고수준 모듈의미 있는 단일 기능을 제공상위 수준의 정책을 구현저수준 모듈고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현기능 예 : 수정한 도면 이미지를 NAS에 저장하고 측정 정보를 DB에 저장하고 수정 의뢰 정보를 DB에 저장하는 기능저수준 모듈의