inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 3기 백엔드 코드 스터디 1주차

성현규
0

정리.

 

A. 추상

1) 구체에서 중요한것만 남겨서 추상화 해야 한다. 

2) 추상으로 부터 구체를 유추하지 못한 이유

3) 이름짓기

4) 메서드와 추상화

- 한 문단의 주제는 반드시 하나여야 한다.

- 메서드는 하나의 일을 해야 한다. 

5) 반환타입 메서드명 (파라미터) {}

* 한줄이라도 추상화를 하는지 -> 코드 크기보다 추상화로 부여하는 의미가 더 중요하다.

6) 추상화 레벨

7) 상수로 추출

 

B. 논리 사고의 흐름

1) Early return을 해서 if문 복잡하게 만들지 말기

2) 사고의 depth 줄이기:

3) 공백 라인: 의미를 어디서 나눌지에 대한 의미를 가진다.

4) 부정어는 사용 지양.

5) 예외처리

1) 객체로 추상화

2) 객체가 제공하는 것

3) 새로운 객체를 만들 때 주의할 점

4) SOLID

  1. SRP : 단일 책임 원칙

     

    • 응집도를 높이고 결합도를 낮추기 위한 방법.

    • 클래스가 변경되는 이유는 하나여야 한다.

    • 테스트가 용이하도록 만들어야 한다.

     

  2. OCP : 개방 패쇄의 원칙

     

    • 개방 폐쇄의 원칙은 확장에는 열려있고 수정에는 닫혀있다.

    • 중요한 것은 코드 변경없이 클래스의 추가만으로 확장 가능해야한다.

       

       

  3. LSP : 리스코프 치환 원칙

     

    • 자식은 부모의 인스턴스로 치환 가능해야 한다.

       

    • 부모 객체가 쓰이는 곳을 자식으로 모두 바꾸어도 바뀌는 것 없이 작동해야 한다.

     

  4. ISP: 인터페이스 분리 원칙

     

    • SRP를 지킬 수 있도록 거대 인터페이스를 만들지 말고 기능별 분리한다.

    • 응집도를 높이며 결합도를 낮춘다.

     

  5. DIP: 의존성 역전 원칙

     

    • 기존 고수준 모듈이 저수준 모듈을 의존하는 것을 모두 추상화에 의존하게 만든다.

    • 결과적으로 서로의 결합도를 낮추고 책임과 메시지만 남는다.

 

미션을 진행하며 배운점.

: 혼자서 객체지향관련 책들을 읽고 프로젝트에 적용해보았지만 정리가 안된 느낌이 강했습니다. 그런데 강의를 들으면서 한번 더 복습하게 되고 멘토님은 어떤 방법이 유용하였고 중요한지 정리해 주셔서 좋다고 생각했습니다. 강의를 들을 수록 이전의 코드들을 되돌아 보게 되네요. 실습을 해보면서 복습도 되고 또 고민했던 부분들에 대해 인사이트를 얻게 되어서 좋습니다. 특히 이번 과제에서는 객체의 책임을 나눌때 "기능적으로 분리"를 해도 되는지 이전 개인 프로젝트에서도 고민이 많았는데 이번 과제를 하면서 어떻게 해야 될지 인사이트가 생겨서 그렇게 개인 프로젝트도 리팩토링 해 보았네요 ㅎㅎ

백엔드 cleancode solid oop refactoring

답변 0