[워밍업 클럽 스터디 2기::백엔드] 2주차 발자국
2주차 클럽 스터디 회고
이번주 학습 내용
객체지향 적용 하는 방법에 대해서 학습했다.
실무에서는 보통 상속 보다 타 객체를 조합하고, 여러개의 구체를 바꾸어가며 사용할 경우 인터페이스를 활용해 설계를 해야 함을 알았다.
Value Object (VO)
도메인의 어떤 개념을 추상화 하여 표현한 객체로, 객체를 값으로 취급하기 위해, 불변성, 동등성, 유효성 검증을 보장하도록 설계해야 한다.
불변성
필드의 값이 변하지 않아야 한다. 생성되는 값들은 final (변하지 않는 값) 으로 선언하고, Setter를 사용하면 안된다.
동등성
객체의 주소가 서로 다르더라도, 내부의 값이 동일하면 같은 객체로 취급해야 한다. (HashCode, equals 재정의를 통해)
유효성 검증
생성자를 통해 객체를 생성할 때, 객체가 가진 특성에 따라 유효성 검증을 통해 객체가 항상 자신이 가진 역할을 수행할 수 있도록 보장해야한다.
Entity 와의 차이점
Entity 는 VO에서, 모든 값이 동일할 때만 같은 객체로 인식하는 것이아니라, 식별자가 존재해 해당 식별자가 같을 경우 동일한 Entity 로 인지하며, 시간에 따라 변화한 Entity로 이해할 수 있다.
일급 컬렉션
단 하나의 Collection 을 가지고 있는 객체이며, 해당 컬렉션을 추상화 시켜 가공로직을 담고 있어, 테스트를 용이하게 만들어 주는 것.
하지만, 일급 컬렉션은 가공로직을 가지고 있기 때문에, 일급컬렉션을 통해 특정 조건을 만족하는 반환할 때, 새로운 콜렉션으로 반환 시켜주어야 한다. (외부에서 해당 컬렉션을 조작하지 못하도록)
도메인 개념은 만드는 것이 아니라 개념을 찾아가는 것이다.
내가 만들어갈 도메인들은 만들어질 기능의 성격에 따라서 관점에 따라서 여러가지 도메인이 만들어질 수 있으며, 만들어질 부분의 성격을 이해해 개념을 찾아가는 과정이다.
좋았던점 (Liked)
이전주에는 기한에 맞추어서 하지 못했던 부분까지, 2주만에 전체 강의를 완강에 성공했다!
이번주차 미션으로 주어진 리팩토링은 고민을 하고, 일이 있어 제 시간에 마무리하지는 못했지만,
내가 지금까지 배운 내용을 강의를 보지 않고 직접 고민해보고 나만의 리팩토링을 하고, 라이브 중간점검을 통해 코드리뷰를 하는 부분을 보며, 개선해갈 방향을 알아가게 되었다!
아쉬웠던 점 (Lacked)
코드리뷰를 제시간에 완료하지 못해 신청하지 못했다..
나도 꼭 리뷰를 받아보려고 내가 저번주 주말에 계획한대로 시간을 할애하지 못해 결국 개인 리팩토링 완료를 신청기간내에 하지 못했고, 하루정도 늦춰져서 마무리했다. (마무리 했더라도 내가 작성한 부분에 대해 반성을 많이 했을 것 같다.)
물론, 내가 코드리뷰 받지 못했어도, 우빈님이 라이브 때 내가 궁금했던 점은 거의 풀렸으며..
3주차에서는, 다른 코드리뷰를 받으신 분들 처럼, readme.md 파일이나, 물어볼 부분의 소주제를 알고, 정리하도록 하는 좀더 기록을 하고, 공유할 수 있도록 할 것이다!
배운 점 (Learned)
Optional 이라는 Null을 반환할 때 명시적으로 표현해 주는 방법이 왜 필요한지 알게 되었다.
앞으로 과제를 통해서나, 기록한 내용을 꼼꼼히 하나하나 분류를 나눠서 진행을 해야함을 알게되었다..
앞으로 바라는 점(Longed for)
실무에서 지금까지 배운 읽기 좋은 코드 작성하는 방법을 매일매일 상기하며 적용시켜 볼 것이다.
아무리 내가 이 강의에 대해 기록을 했다고 하더라도, 계속 고민하고 살펴보지 않는다면, 결국에 다시
배우기 이전으로 하나하나 돌아가는 것 같다.. 이제는 작은 한파일 작업할때 정렬하는 부분 부터 시작해서
코드를 작업하고 배운부분을 하나하나 적용할 부분은 없는지 이걸 몸에 습관으로 배게 할 것이다!
댓글을 작성해보세요.