2022 Masters Course/Web Backend Course

2022 마스터즈 코스(백엔드) 29일차 회고(2022. 2. 17.) - "협업을 위한 상대 입장에서 생각하기"

ikjo 2022. 2. 17. 18:30

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

오늘 오전에는 호눅스의 마스터 클래스 강의가 진행되었다. 강의 내용은 git을 이용한 협업 방법과 Java 기초 문법에 대한 내용으로 구성되었다.

 

우선 git을 이용한 협업 방법에 대한 강의를 통해 가장 인상깊었던 대목은 git을 통해 자신이 수정(or 생성)한 내용을 커밋 메시지로 작성할 때 가장 중요한 것은 상대와의 "커뮤니케이션(의사소통)이 얼마나 잘되는가?"가 척도가 되어야 한다는 것이다. 커밋 메시지는 내가 나중에 이 코드를 이해하기 위함도 있지만 협업 시에는 내가 작성한 코드를 제대로 이해할 수 있도록 도모하기 위한 것이다.

 

즉, 커밋 메시지를 작성할 때는 나의 입장보다도 이것을 보는 상대 입장에서 제대로 이해할 수 있을지 생각해봐야 한다는 것이다. 이러한 점들을 미루어 보았을 때 그동안 커밋 메시지나 README 파일 등을 잘 작성하고 있었는지 되돌아 보는 시간을 갖았다. (결과적으로는 잘 못하고 있었다. 😂)

 

이후 Java 기초 문법에 대한 강의가 진행되었는데, 어떤 부분은 평상시에 제대로 이해하고 있었던 부분도 있었지만 또 다른 어떤 부분들에 대해서는 아직 이해도가 부족하다는 것을 느낄 수 있었다. 특히, String과 StringBuffer 그리고 StringBuilder의 특성 및 사용 용도의 차이에 대한 내용들이 굉장히 유익했다. 평상시 내가 알고있었던 것들을 안다고 생각하지만 말고 다시 한 번 점검해보는 시간도 가져야 할 필요성을 느꼈다.

 

 

학습 회고

  • 클린 코드 관련 미션 과제 풀이 및 그룹리뷰
    • Java 웹 백엔드 클래스 내 소모임원과 zoom 회의실에서 학습

 

어제에 이어 오늘 하루 역시 지속해서 클린 코드 관련 미션을 단계별로 수행해나갔다. 점점 기능들이 커질수록 기존 코드들을 재활용할 수 있는 일들이 많아지는 등 객체간 역할과 책임을 분리하는 것의 중요성이 점점 커졌다. 프로그램의 기능이 많지 않을 때는 이처럼 객체지향 프로그래밍을 하는 것이 큰 효과를 발휘하지 못하지만 기능이 많아지면 많아질수록 기능 확장성면에서나 유지보수 측면에서나 객체지향 프로그래밍의 장점이 부각되는 것 같다. 아직 개인적으로는 객체지향 프로그래밍 실력이 많이 부족하다고 생각되기에 오늘도 개별적으로 객체지향에 대해 학습했었던 내용을 정리해보았다.

 

단일 책임 원칙

어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.(로버트 C. 마틴) 이 말은 클래스의 역할(책임)을 분리하라는 것이다. 즉, 하나의 클래스에 각종 성격의 속성과 메서드를 집약시키지 말고 각 성격에 따라 역할 및 책임을 분리하여 클래스를 나누라는 것이다.

이러한 원칙은 클래스의 분할뿐만 아니라 속성, 메서드, 패키지, 모듈, 컴포넌트, 프레임워크 등에도 적용할 수 있는 개념이다. 예를 들면 하나의 속성이 여러 의미를 갖는 경우도 단일 책임 원칙을 지키지 못하는 경우다. 심지어 데이터베이스 테이블을 설계할 때도 이러한 단일 책임 원칙을 고려해야 한다. 데이터베이스 테이블을 설계할 때는 정규화라고 하는 과정을 거치게 되는데, 정규화 과정을 조금 더 확장해서 생각해 보면 테이블과 필드에 대한 단일 책임 원칙의 적용이라고 할 수 있다.

만일 강아지라는 클래스 안에 소변보다() 메서드가 있다고 가정했을 때 하나의 메서드 안에 수컷 강아지의 행위와 암컷 강아지의 행위를 모두 구현하려고 하면 단일 책임 원칙을 위배하고 있는 것이다. 메서드가 단일 책임 원칙을 지키지 않을 경우 나타나는 대표적인 냄새가 바로 분기 처리를 위한 if문이다.

이러한 단일 책임 원칙은 객체 지향 4대 특성 중 모델링 과정을 담당하는 추상화와 가장 밀접한 관계가 있다.

 

 

좋았던 점

  • 오늘 마스터 클래스를 통해 아주 유익한 내용들을 많이 학습할 수 있었습니다.

 

 

아쉬웠던 점

  • 해야할 일이 아주 많기에 어느 일부터 먼저하지 하며 우왕좌왕 했던 시간이 많았습니다. 좀 더 여유를 가지고 차분한 마음을 가지고 해야할 일에 대한 우선순위를 매겨 하나씩 처리해가는 연습을 해야겠습니다.

 

 

참고자료

  • 위키북스 출판 "스프링 입문을 위한 자바 객체 지향의 원리와 이해"