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

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

강의 : Readable Code: 읽기 좋은 코드를 작성하는 사고법

섹션 2 추상

추상화를 코드 레벨에서 어떻게 풀어내는지?

이름 짓기

  • 가장 쉬운 추상화 방법이면서 가장 중요하다고 생각한다

  • 이름 하나만 잘 짓고 하나의 주제 단위로 메소드 추출만 잘 해도 가독성 좋은 코드가 된다

메소드

  • 메소드명이 추상화에 중요한 건 알았지만 리턴타입, 파라메터, 파라메터 순서까지 신경쓰지는 않았었다

  • 리턴타입, 파라메터의 변수명을 활용하여 가독성 좋은 코드를 어떻게 만드는지 알 수 있었다

     

섹션 3 논리, 사고의 흐름

가독성 좋은 코드를 위해서 사용할 수 있는 여러 기법들을 소개한다

early return

  • 복잡한 분기가 있을 경우

공백 라인

  • 의미 단위로 공백 라인을 사용하면 가독성에 도움을 준다

부정어에 대한 자세

  • 부정어를 긍정어로 바꿀 수 있다면 변경

  • 이름에서 부정을 나타내도록 변경

메소드 내에서 같은 레벨로 추상화

  • 재사용성은 떨어지더라도 메소드 추출하여 하나의 메소드에서 같은 레벨로 추상화

섹션 4 객체지향 패러다임

SOLID를 코드 레벨에서 어떻게 구현할 수 있는지?

  • SRP

클래스가 변경될 이유는 단 하나다!!

클래스 설계 시, 하나의 관심사로 응집하여 구현하도록 하자

  • OCP

기존 코드의 변경 없이, 기능 추가하도록 설계가 되어야 한다

 다형성을 이용하여 클라이언트 코드의 변경 없이 구현체를 쉽게 변경이 가능하다

  • LSP

부모 클래스에서 정의한 스펙을 자식 클래스에서도 지켜야 한다

instance of로 타입 체크하여 특정 타입에 대해서만 처리가 필요하다는 건 LSP를 위반한 사례이다!!

  • ISP

SRP와 비슷하게 인터페이스 또한 한 가지 책임을 가지도록 분리를 잘해야 한다

  • DIP

클래스 참조 시, 추상화 레벨이 높은 인터페이스, 추상클래스, 상위 클래스를 참조하도록 하자

코드에 구현체가 드러나게 되면 기능 변경시, 클라이언트 코드의 변경이 생기므로

추상화 레벨이 높은 인터페이스 등을 메소드 파라메터, 필드, 리턴타입으로 활용하도록 하자

댓글을 작성해보세요.

채널톡 아이콘