[인프런 워밍업클럽 백엔드 스터디 2기] 1주차 발자국
1주차 학습내용
추상
잘 쓰여진 코드라면, 한 메서드의 주제는 반드시 하나다.
생략할 정보와 의미를 부여하고 드러낼 정보를 구분하는 것이 중요하다.
추상화는 코드의 양보다 의미가 중요하다.
추상화 레벨이 갑자기 달라지면 코드를 읽는 입장에서 이해하는 데 어려움이 있기 때문에 어떤 의미를 담을 때 주변에 비해 너무 구체적인 의미를 담지 않는지에 대해 생각해야 한다.
논리,사고의 흐름
Early return
사고의 depth 줄이기
부정의 의미를 담는 다른 단어가 존재하는지 확인, 부정어구로 메서드명 구성 ('!'는 가독성이 떨어짐)
예외처리 -> 항상 NullpointException을 방지하는 방향으로 경각심을 갖고 코드 작성
메서드 설계시 return null을 자제하기!
객체 지향 패러다임
새로운 객체를 만들 때 1개의 관심사로 명확하게 책임이 정의되었는지 확인하기
setter 사용 자제하기, getter도 처음에는 사용 자제하고 반드시 필요한 경우에 추가
필드의 수는 적을수록 좋다.
객체 지향 적용하기
상속은 결합도가 높아 수정이 어려우니 조합과 인터페이스라는 유연한 구조를 사용하자.
Value Object (VO) : 도메인의 어떤 개념을 추상화하여 표현한 값 객체
Entity와 VO의 차이는 식별자의 유무 (VO는 식별자가 없음)
getter로 컬렉션을 반환해야 한다면 새로운 컬렉션으로 만들어 반환(외부의 조작 피하기 위해)
1주차 미션
[DAY2 미션]
추상과 구체의 예시로 "집에서 아이스 라떼 만들기"의 과정을 설명했다. 일상 속의 예시를 생각하는 과정에서 추상과 구체라는 개념을 더 이해할 수 있었다.
[DAY4 미션]
예시 코드를 리팩토링 하는 과정에서 시간적 여유가 부족해 꼼꼼히 보지 못해 아쉬운 부분이 있다. (다시 리팩토링 해 볼 예정)
SOLID에 대해 알고는 있지만 막상 설명하려고 하면 잘 나오지 않았는데 이번 기회에 나만의 언어로 적어보면서 더 정리할 수 있었다.
회고
가볍게 생각했는데 생각보다 매일 일정한 분량의 강의를 듣는다는 것이 쉽지 않았다. 그리고 막연히 '클린코드'는 좀 더 기술적인 역량이 갖춰진 상태에서 접해야 하는 부분이라고 생각했는데 강의를 듣다보니 내가 짜고 있는 코드에도 충분히 적용할만한 내용들이 많았다. 그리고 강의를 들으면서 객체지향에 대한 개념과 추상과 구체에 대한 내용을 코드 리팩토링에 어떤 식으로 적용할 수 있는지에 대해 생각해 볼 수 있었다.
댓글을 작성해보세요.