본문 바로가기
💾 Backend/우아한 테크코스-프리코스

🛸 객체지향 생활체조 원칙 🛸

by 정람지 2023. 10. 29.
 

이유와 솔루션으로 정리하는 객체지향 생활체조 원칙

객체지향 생활체조 원칙 소트웍스 앤솔러지 표지 "어떤 멍청이라도 컴퓨터가 이해할 수 있는 코드는 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 작성한다. (Any fool can write

hudi.blog

마틴 파울러의 책 소트웍스 앤솔러지에 나온 9가지 원칙

응집도(cohension), 느슨한 결합(loose coupling), 무중복(zero duplication), 캡슐화(encapsulation), 테스트 가능성(testability), 가독성(readability), 초점(focus)


⭐️ 1.  한 메서드에 오직 한 단계의 들여 쓰기만 한다 ⭐️

" 함수는 한 가지만 하기!!! 한 가지를 잘 하기!!"

 

while에 if 정도? 2번까지만 허용

 

" 메소드 추출 " 기법

코드의 일부분을 메소드로 분리하는 것


⭐️ 2. else 예약어(keyword)를 쓰지 않는다.⭐️

조건 else 쓰지 말기!

depth 가 깊어질 수 있기 때문!!

 

if 절이 중첩되면 코드가 비선형적으로 흐름else 문 내에서 다시 중첩된 코드를 만들 가능성 존재

 

 

대신 return 쓰기!

< Early Return 패턴 >

( if else 문도 사용 자체 )

 

보호 절 ( gaurd clause )

전략 패턴 ( strategy pattern )

널 객체 패턴 ( null object pattern )

 

switch- case 문 사용 도 똑같은 문제!!

 


⭐️ 3. 모든 원시값과 문자열을 포장(wrap)한다. ⭐️

원시 타입에 대한 집착 (안티 패턴) ❌

원시타입을 객체로 만들기잘못된 타입 전달 시 컴파일 에러 방지 가능함

 


⭐️4.  한 줄에 점을 하나만 찍는다. ⭐️

디미터 원칙 : 낯선 이와 이야기하지 말라 / 최소 지식 원칙많은 점 사용 -> 객체가 다른 객체에 깊숙히 관여하고 있음 -> 캡슐화가 깨져있다는 것

 

"결합도"에 관련한 이야기!

 


⭐️ 5. 줄여쓰지 않는다(축약 금지). ⭐️

단일 책임 원칙(SRP 원칙)을 위배하지 말기! 많은 일을 하지 않게 -> 그리고 메소드명을 축약하지 않아도 적당한 길이로 만들기.

 

 


⭐️ 6. 모든 엔티티(entity)를 작게 유지한다.⭐️

50줄이 넘는 클래스와 파일이 10개 이상인 패키지를 지양

(단일 책임 원칙)SRP 원칙 : 나의 객체는 반드시 하나의 기능만을 수행하는 책임을 갖는다는 원칙


 

 

⭐️ 7.  2개를 초과하는 인스턴스 변수를 가진 클래스를 쓰지 않는다.⭐️


⭐️ 8. 제일 클래스(first-class) 콜렉션을 쓴다⭐️

 

🛸 일급 컬렉션 (First Class Collection) ..ing

 

junggoldchae-coding.tistory.com


⭐️ 9. 게터(getter)/세터(setter)/프로퍼티(property)를 쓰지 않는다.⭐️

으허엉 1주차 엄청 썼는데요

 

묻지 말고 시켜라 원칙 : 객체에게 책임이 있는 작업은 객체에게 직접 시키기

Getter/Setter/Property를 남발하면, 불필요한 객체 내부 구현의 노출로 이어지며 이는 곧 응집도 하락과, 캡슐화의 위반으로 이어짐


앞으로 잘 적용해봐야겠다!!!

띠용하는 게 너무 많다...

'💾 Backend > 우아한 테크코스-프리코스' 카테고리의 다른 글

🛸 커밋 메세지 컨벤션  (0) 2023.11.01
🛸 Java 코드 컨벤션 ..ing  (0) 2023.10.31
🛸 MVC 패턴  (0) 2023.10.27
🛸 Enum  (0) 2023.10.27
🪐우테코 프리코스🪐 - 2주차 과제🔭  (0) 2023.10.26