클린코드_OOP

정영록·2021년 10월 19일
0

클린코드

목록 보기
1/3

Why Clean Code?

내가 작성한 코드를 대충 돌아만 가게 작성하면 안되고 읽기 편하도록 작성해야 된다.

Why OOP?

위 그림과 같이 절자 지향형에서는 모든 프로시저들이 데이터를 공유하기 때문에 데이터 변경이 어렵다.

객체 지향형은 데이터와 그 데이터를 조작하는 코드의 변경은 외부에 영향을 끼치지 않는다.
한 객체 내부의 응집도는 높고 각 객체의 결합력은 낮다.

단순한 시스템은 쉬운 절차지향으로 설계한다.

복잡하거나 요구사항 변화가 발생하는 유지보수가 필요한 시스템은 객체지향으로 설계한다.

Object/Role/Responsbillity

Object 객체는 역할을 가진다.
Role 게시판의 이용자의 그룹(역할)을 뜻한다.
Responsibillity 역할과 연관된 기능(책임)을 뜻한다.

객체지향 설계 과정

  1. 기능을 제공할 객체 후보 선별

    내부에서 필요한 데이터를 선별한다.
    클래스 다이어그램
    정적 설계

  2. 객체 간 메세지 흐름 연결

    커뮤니케이션 다이어그램
    시퀀스 다이어그램
    동적 설계

    1,2를 반복

Encapsulation

코드를 어떻게 구현했는지 내부적으로 감추고 내부의 데이터나 코드의 변경이 Client에 영향을 미치지 않도록 해야함

Tell, Don't Ask
데이터를 요청해서 변경 저장 하지말고
기능을 실행하라

Law of Demeter

Command Vs Query

Command(Tell)
객체의 내부 상태를 변경
어떤 결과를 반환 할 수 있다.
Query(Ask)
객체의 상태에 대한 정보 제공
객체의 상태를 변경하지 않는다.

Polymorphism

한 객체가 여러가지(poly)
모습/타입(morph)을 가질 수 있다.

상속을 통해 다형성을 구현
구현 상속  수퍼 타입의 구현을 재사용
인터페이스 상속  타입 정의만 상속
인터페이스를 통한 상속은 기존에 만들어진 로직은 변하지 않는다. => 코드의 재사용

profile
이생망

0개의 댓글