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)
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)
인터페이스 분리 원칙 - 위키백과, 우리 모두의 백과사전 (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 를 유의해야 한다.
'컴퓨터공학 > 기타' 카테고리의 다른 글
도커 쿠버네티스 강의 필기노트 (0) | 2022.12.13 |
---|---|
톰캣 또는 Tomcat7w 설치, 수정, 삭제 정리 (0) | 2022.06.08 |
CleanCode> Control Structure (0) | 2021.12.26 |
CleanCode> Comments & Code Formatting , Length & Parameters (0) | 2021.12.25 |
CleanCode> intro & Variables, Functions, Classes 작명법 (0) | 2021.12.12 |