[워밍업 클럽] BE 클린코드&테스트 2주차 발자국
강의 요약
능동적 읽기
복잡하거나 엉망인 코드를 읽고 이해하려 할 때, 리팩토링을 하자.
공백으로 단락 구분
메서드와 객체와 추상화 해보기
주석으로 이해한 내용 표기하며 읽기
언제든지 rollback 할 수 있다
겁먹지 말자
목표는 도메인 지식을 늘리는 것.
작성자의 의도를 파악하는 것.
오버 엔지니어링
적정 수준보다 더 높은 수준의 엔지니어링
구현체가 하나인 인터페이스
아키텍처 이해에 도움을 주거나, 추가될 가능성이 높다면 OK
구현체를 수정할 때마다 인터페이스를 수정해야함
코드 탐색에 영향을 줌. 애플리케이션이 비대해 짐.
너무 이른 추상화
정보가 숨겨지기 때문에 복잡도가 높아진다.
의도 파악하기 어렵다.
경험의 영역이다. 경험을 쌓자.
은탄환은 없다. (No Silver Bullet)
체스를 코딩하려면?
인터페이스와 클래스로 구현하자! → 유지보수 하기 쉬울거야!
but 체스는 500년동안 변하지 않았다..
클린코드는 은탄환이 아니다.
지속가능한 소프트웨어의 품질 vs 기술 부채를 안고 가는 빠른 결과물
둘 사이에서의 줄다리기를 잘 해야한다.
클린 코드를 항상 생각하면서 추후 수정이 쉽도록 작성해야 한다.
모든 기술과 방법론은 적정 기술의 범위 내에서 사용되어야 한다.
도구라는 것은, 일단 그것을 한계까지 사용할 줄 아는 사람이 그것을 사용하지 말아야 할 때도 아는 법이다.
적정 수준을 알기 위해, 때로는 극단적으로 시도해보자.
경험이 중요하다.
미션 회고
이번 미션은 StudyCafePassMachine 의 코드를 리팩토링 하는 것이었다.
처음 코드를 받아본 순간 막막했다. 어디서부터 어떻게 리팩토링 해야하지? 이렇게 하는 게 맞을까? 라는 고민이 끝없이 이어져 끝내 시간내에 미션을 완료하지 못하였다.
무한한 고민속에 잠식되어 있다가, 결국 강의를 보면서 리팩토링을 따라갔다.
가장 인상깊었던 리팩토링은 추상화 관점의 차이이다.
초기 FileHandler로 짜여져 있던 코드를 Provider 로 추상화 한 후, 이를 구체화한 FileProvider로 리팩토링하였다.
이를 통해 파일로 입력을 받지 않고, 구글 sheet나 엑셀로 입력을 받더라도 구현체만 새로 구현하면 기존 코드를 고칠 필요가 없이 편하게 유지보수가 가능해지기 때문이다.
고수준에 의존하지 않고 추상화한 저수준에 의존하여 코드를 작성한다. 라는 말이 이 강의를 통해 와닿게 되었다.
이런 상황이 현재 재직중인 회사에서 정말 많이 나타나는데, 회사에 적용하여 유지보수하기 쉬운 코드를 작성할 수 있을 것 같다.
느낀점
가장 좋았던 점은 금요일에 중간점검을 통해 다른 분들의 코드를 같이 보는 것이었다.
강사님이 코드리뷰를 진행하면서 나와 다른 사람들의 생각의 공통점과 차이점을 알 수 있었다.
또한, 강사님의 친절한 피드백이 코드리뷰에만 적용되는 것이 아니라 지금까지 내가 작성해온 코드, 추후 내가 작성할 코드에 대해 이정표를 제시해 주는 것 같아 매우 만족스러웠다.
댓글을 작성해보세요.