🖤인프런만의 100% 블프 이벤트🖤

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

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

Day 6. 리팩토링: 코드 다듬기

주석의 양면성

좋은 주석

  • 우리가 가진 모든 표현 방법을 총동원해 코드에 의도를 녹여내고, 그럼에도 불구하고 전달해야 할 정보가 남았을 때 사용하는 주석

변수와 메서드의 나열 순서

  • 중요한 것은, 나열 순서로도 의도와 정보를 전달할 수 있다는 것

패키지 나누기

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

  • 처음 만들 때부터 잘 고민해서 패키지를 나눠놓는 것이 제일 좋다.

     

    IDE의 도움 받기

  • 코드 포맷 정렬 : Option + Cmd + L | Ctrl + Alt + L

  • 코드 품질 : Sonarlint (https://www.sonarsource.com/products/sonarlint)

  • 포맷 규칙 : .editorconfig (https://editorconfig.org/)

Day 7. 클린코드 리팩토링 실습

미션 - 스터디 카페 이용권 선택 시스템 리팩토링

 https://github.com/japygo/readable-code/tree/mission6-1

회고

  • 강의를 통해 배운 것을 생각하며 리팩토링하려 했지만 생각보다 쉽지 않다.

  • 변수명, 메서드명이 잘 떠오르지 않았다.

     

Day 8. 리팩토링 연습 | 기억하면 좋은 조언들

리팩토링 연습

추상화 레벨

  • 중복 제거, 메서드 추출

  • 객체에 메세지 보내기

     

    객체의 책임과 응집도

  • IO 통합

  • 일급 컬렉션

  • display()의 책임

  • Order 객체

관점의 차이로 달라지는 추상화

  • FileHandler를 바라보는 관점

     

    • 어떤 데이터를 필요로 하는가

    • 데이터를 어디로부터 어떻게 가져올 것인가

기억하면 좋은 조언들

능동적 읽기

  • 능동적으로 리팩토링하면서 물고 뜯고 맛보면서 읽기

오버 엔지니어링

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

  • 오버 엔지니어링을 경계하고 꼭 필요한 곳에 알맞게 사용

은탄환은 없다

한번은 개발자와 체스를 구현하는 방법에 대해 논의한 적이 있습니다.
나는 그가 어떻게 할 것인지 물었습니다.
객체 지향 프로그래밍에 정통한 그는 “인터페이스와 클래스를 사용한다”고 답했습니다.
나는 “하드코딩하는 편이 더 쉽지 않을까요?” 라고 운을 띄웠습니다.
그는 “물론이죠. 하지만 잘 유지보수 하시기 바랍니다.” 라고 말하면서 내가 농담을 한 것처럼 씩 웃었습니다.
“체스는 지난 500년 동안 변하지 않았습니다.”
내 말에 그의 눈이 커졌습니다.

- 크리스찬 클라우젠, 「파이브 라인스 오브 코드」, 위키북스, 2023, 302p

  • 항상 정답인 기술은 없다.

마무리하며

전문가는 언제나 탑다운(top-down)으로 깔끔하게 생각할 것이다.
라는 미신.

- 김창준, 「함께 자라기」, 인사이트, 2018, 153p

  • 추상과 구체를 넘나드는

Day 9. 중간 점검

  • 헥사고날 아키텍쳐 - 만들면서 배우는 클린 아키텍처(https://www.yes24.com/Product/Goods/105138479)

  • 클린 코드, 테스트 코드, 더 나아가서 소프트웨어 개발은 팀 게임, 혼자는 한계가 있다.

  • 아주 작은 단위, 메서드 분리부터 시작 -> 책임을 정의하고 객체로도 분리

  • 잘 만들어진 라이브러리, 프레임워크에서 배우는 것도 좋은 방법 - https://github.com/spring-projects

  • 파라미터 수가 많을 경우 의도에 따라 줄일 수 있으면 좋다.

  • 도메인따라 다르지만 NPE 방지를 위해 empty 객체 반환

회고

  • 1주차도 그렇고 2주차때도 꼭 강의를 들으려 하면 일이 생긴다.

  • 일을 다니며 하는건 쉽지 않다.

  • 그동안 궁금하고 답답한 부분을 시원하게 긁을 수 있는 강의라서 매우 좋았다.

출처

댓글을 작성해보세요.

채널톡 아이콘