[워밍업 클럽 스터디 2기 :: BE 클린코드 & 테스트] 1주차 발자국

1주차에서 배운 내용 중 가장 중요한 주제는 추상화라고 생각한다.
섹션 2 추론에서는
프로그램은 데이터와 코드의 조합으로 구성되어 있고 코드 설계 시 중요한 정보는 남겨 데이터를 관리하는 코드에서 중요한 말만을 남겨 놓는다. 이렇게 추상화를 할 때 높은 추상화와 낮은 추상화가 격으로 나눠지는데 클린 코드를 함에 있어 main 부분에는 고수준 추상화를 남겨 놓구 구현부에 저수준 추상화를 하여 동료 개발자가 유지보수하기 편하게 약속을 정할 수 있다.


결국, 구체로 부터 추상을 해내고 정보를 덜어내고 가장 중요한 정보는 남기고 추상화 과정은 컴퓨터 과학의 본질이고 도메인 개념에서 추상화 하는 작업을 해나가야 한다..

섹션3 논리, 사고의 흐름에서는

  1. Early return 으로 else의 사용

  2. 추상화를 통한 사고 과정의 depth를 줄이는 것이 중요

  3. 공백으로 문단 나누자

  4. 코드(조건문 등)에서 부정어구(!)를 가급적 피하자

  5. 예외 발생 중 NPE에 대한 부분을 처리하는데 있어 Optional에 대해 배웠음

    1. orElseThrow() : 선택적 값이 존재하지 않으면 NoSuchElementException 같은 예외를 발생시키며, 존재하면 그 값을 반환

    2. orElse() : 선택적 값이 없으면 괄호 안에 정의된 기본 값을 반환

    3. orElseGet() : 선택적 값이 없으면, orElseGet()에 전달된 람다식이나 메서드가 실행되어 그 값을 반환

섹션 4 객체 지향 패러다임에서는 SOLID에 대해서 배웠다.

1. SRP(Single Responsibility Principle)

  • 하나의 클래스는 단 한가지의 책임(변경 이유)만을 가져야 함

2. OCP (Open-Closed Principle)

  • 확장에는 열려있고 수정에는 닫혀 있어야 함

    • 기존 코드 변경 없이 시스템의 기능을 확장할 수 있는 코드로 실무에서 구현

LSP (Liskov Subsitution Principle)

  • 상속 구조에서 자식 클래스는 책임을 담당하고 부모 클래스의 행동을 변경하지 않아야 함

ISP ( Interface Segregation Principle)

  • 인터페이스 스펙을 분리하여 구현체가 불필요한 스펙까지 상속하지 않아야 함

    • 인터페이스가 여러 기능을 포함하고 있으면 결합도가 증가

    • 인터페이스를 분리

    • 구현체가 분리된 인터페이스를 상속하여 사용하고자하는 스펙만을 사용하도록 함

DIP (Dependency Inversion Principle)

  • 고수준 모듈은 저수준 모듈을 직접적으로 의존하기 보단 중간에 인터페이스를 생성하고 인터페이스에 의존하도록 함

    • 고수준 : 추상화 레벨이 높은 것

    • 저수준 : 추상화 레벨이 높은 것

    • 의존성 순방향 : 고수준 모듈이 저수준 모듈을 참조

      • 의존성 : 하나의 모듈이 다른 하나의 모듈을 알고 있거나 직접적으로 생성하거나 사용하는 모든 것

해당 내용을 배웠다.

댓글을 작성해보세요.

채널톡 아이콘