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

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

주석

  • 의사 결정의 히스토리를 코드로 표현할 수 없을 때, 주석으로 상세하게 설명

  • 자주 변하는 정보는 지양

  • 코드도 변경되면 주석도 함께 변경

좋은 주석?

우리가 가진 모든 표현 방법을 동원해 코드에 의도를 녹여내고

그럼에도 불구하고 전달해야 할 정보가 남았을 때 사용하는 주석


변수와 메서드의 나열 순서

정답은 없지만 중복이 없을 수 있게 정렬

변수

  • 사용하는 순서대로

  • 사용하는 곳 근처

메서드

  • 공개 메서드를 상단에

  • 중요도, 종류별로 그룹화

  • 상태 변경 >> 판별 ≥ 조회

나열 순서로도 의도와 정보를 전달 할 수 있는 것!!!

코드를 보는 사람이 인지하기 쉽게!!


패키지 나누기

  • 패키지는 문맥으로써의 정보를 제공할 수 있다.

  • 패키지는 적당(?)하게 나눠야 좋다



리펙토링

  • null 을 반환하는 것은 nullPointException 을 발생시키기 때문에 안티패턴

  • 파라미터로 Optional 을 보내는 것도 안티 패턴

  1. Optional 이 자체가 null

  2. Optional 에 들어있는 객체가 null

  3. Optional 에 들어있는 객체가 존재 한다 받는 입장에서는 위 3가지 처리를 해야함

  • Optional.ifPresentOrElse 앞에는 값이 있을 때, 뒤에는 값이 없을 때 액션을 지정할 수 있음

    optionalLockerPass.ifPresentOrElse(
        lockerPass -> outputHandler.showPassOrderSummary(selectedPass, lockerPass),
        () -> outputHandler.showPassOrderSummary(selectedPass)
    );
    
  • Git Commit 은 짧게 짧게

    • 작업을 쪼개서 유지 관리에 용이 해짐

IO 통합

  • 세트로 묶여서 작업되는 부분들을 합쳐서 관리하는 것

일급 컬렉션

  • 일급 컬렉션은 리스트를 감싸서 컬렉션 내부에서 리스트를 추상화(제어.. 등등)을 할 수 있음

display 책임

Order 추가

헥사고날 아키텍쳐

  • 포트와 어댑터

    • 포트 : 인터페이스, 스펙!

    • 어댑터 : 포트에 맞는 구현체


능동적 읽기

  • 목표 : 우리의 도메인 지식을 늘리는 것!!

오버 엔지니어링

  • 필요한 수준보다 더 높은 수준의 엔지니어링!

  • 구현체가 하나인 인터페이스

    • 구현체를 수정할 때마다 인터페이스도 수정해야함

    • 코드 탐색에 영향, 어플리케이션이 비대해 짐

  • 너무 이른 추상화

    • 정보가 숨겨지기 때문에 복잡도가 높아진다

    • 다른 개발자들이 의도를 파악하기 어렵다.

클린코드는 절대적인 것이 아니다.

미래에 잘 고치도록 할 수 있는 코드 센스가 필요!

결국 클린코드의 사고법을 기반으로 결정!

지속가능한 소프트웨어의 품질 vs 기술부채를 안고 가는 빠른 결과물

채널톡 아이콘