본문 바로가기

컴퓨터공학/기타

CleanCode> Objects, Classes & 전체 요약

Clean code는 가독성과 직관성

Patterns & principle은 확장성과 유지보수성

 

Class는 최대한 작고 짧게 만들어야 한다.

single responsibility principle 원칙에 따라 하나의 책임을 가져야 한다. 

 

 

function에서 abstraction level을 다루듯이 class에서는 cohesion이 있다.

Maximum cohesion은 클래스 메서드가 클래스 모든 변수(properties)를 사용할 경우를 말한다.

No cohesion은 클래스 메서드가 어떠한 클래스 변수를 사용하지 않을 경우를 말한다.

 

 

디미터의 법칙(Law of demeter)

객체 내부 구조가 외부에 드러나는지 보는 것이다. 

 

[OOP] 디미터의 법칙(Law of Demeter) - MangKyu's Diary (tistory.com)

 

[OOP] 디미터의 법칙(Law of Demeter)

1. 디미터의 법칙(Law of Demeter) [ 디미터의 법칙(Law of Demeter) 이란? ] 디미터의 법칙은 “Object-Oriented Programming: An Objective Sense of Style” 에서 처음으로 소개되었다. Demeter라는 프로젝트..

mangkyu.tistory.com

 

SOLID 법칙

Single responsibility principle :

각 클래스는 하나의 책임을 갖는다. 책임은 단순히 일 하나가 아니라 기능에 따른 일의 묶음을 의미한다.

이 원칙으로 클래스는 작아지고 읽기 쉽다.

 

Open closed principle :

클래스는 확장성에 열려있어야 하고 수정에 닫혀있어야 한다. 

하나를 수정하는데 다른 기능도 줄줄이 수정하면 안된다.

추가나 변경이 있을 때 이미 있는 코드를 변경하지 않아야 한다. 

방법은 인터페이스와 구현된 추상화 클래스를 상속한다.

기능이 새로 생긴 메서드가 필요할 때, 인터페이스와 구현 클래스를 구현,상속만 하면 된다. 

 

Liskov substitution principle :

B가 A의 자식 객체일 때, 프로그램에서 A에서 B로 내용을 변경하고 싶을 경우, 프로그램 변경 없이도 A객체에서 B로 변경할 수 있어야 한다.

부모 클래스 A를 사용하고 있는 기존 프로그램에서 자식 클래스인 B로 변경해도 문제없이 작동해야 한다는 뜻이다. 

그러기 위해서 자식 클래스는 부모 클래스가 따르고 있는 계약 사항을 자식도 따라야 한다. 

 

Interface segregation principle :

큰 인터페이스를 구체적이고 작은 단위들로 분리시켜 클라이언트들이 꼭 필요한 메서드를 이용한다.

 

Dependency inversion principle :

상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다.

파라미터나 식별자 쓸 때 자료형은 구체적인 객체 타입이 아니라 추상적인 인터페이스를 쓸 것.

 

 

 

 

SOLID : 리스코프 치환 원칙 :: 개발하는 피자 양목장 (tistory.com)

 

SOLID : 리스코프 치환 원칙

리스코프 치환 원칙 (LSP: Liskov Substitution Principle) 리스코프 치환 원칙은 SOLID 원칙 중에서도 가장 애매하고 오해하기 쉬운 원칙이다. 이전과 마찬가지로 이 원칙의 이론적 정의를 설명하자면, 'B가

pizzasheepsdev.tistory.com

인터페이스 분리 원칙 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

인터페이스 분리 원칙 - 위키백과, 우리 모두의 백과사전

인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다.[1] 인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분

ko.wikipedia.org


Clena code 전체 요약 & 체크리스트

Clean code는 가독성과 직관성

1. 작명법

설명하는 이름

변수는 수식이 붙은 명사

클래스는 명사

메서드는 짧은 동사구

구체적으로 쓰지만 과하지 않게

은어는 피하고 마음대로 축약어를 쓰지 말 것. 그리고 일관성이 있어야 함.

 

2. 주석/코드 띄어쓰기 형식

주석은 법적 정보, 주의점, 필요 설명, 해야할 것을 적는다.

띄어쓰기는 수직과 수평이 있는데 수직은 비슷한 개념은 가까이 붙인다. 

수평은 가독성을 위해 짧게 쓰고 들여쓰기를 사용한다. 

 

3. 함수

파라미터 숫자는 제한. 최대한 숫자를 줄일 것.

파라미터는 딕셔너리를 이용하자. 

함수는 작고 하나만 해야 한다. 

Level of abstsraction. 하나의 함수에서 level 차이가 나면 안됨.

 

4. 제어 구조

함수이름은 positive값이 나오도록 작명

중첩 구조(Nesting)를 피하는 방법은 Error Guard를 사용하여 입구컷하거나,

조건문은 따로 함수로 만들어서 분리할 것. (abstraction level도 고려하기 위해)

중복코드를 피하기 위해 다형성Factory 패턴 사용.

글로 쓰는 에러문이 아니라 Error exception handling을 사용.

 

5. 클래스와 객체  

클래스는 작아야 한다. 

클래스는 하나의 메서드를 가져야하는 게 아니라 맡고 있는 책임을 하나로 만드는 것에 집중해야 한다.

Law of Demeter.

SOLID principles. 특히 클린코드를 생각한다면 Single responsibility와 Open and close 를 유의해야 한다.