[워밍업 클럽 4기 백엔드] 1주차 발자국

1주차에 배운 것들

📌 추상에 대해서

강의를 듣기 전까지는 '추상'에 대해서 사전적으로만 알고 있었다. 사실 사전적 정의를 알았던 것이지 "객체 지향에 추상을 어떻게 적용하는 거지?"라는 의문과 구체와 추상의 경계가 모호했다. 하지만 강의를 통해 나는 이미 많은 구체들을 추상화를 시키며 개발했다는 것을 알게 되었다. 결국 추상화를 잘 하기 위해서는 이론을 공부하듯 암기하는 것이 아니라 고민을 통해 익숙해져야 하는 것 같았다.

 

📌 알고 있지만 무시했던 것들

프로젝트를 하다보면 당장의 기술 구현을 위해 변수와 메서드의 이름을 지금 당장만 이해할 정도로 짓고 넘어갔다. 게다가 한 메서드에 모든 코드가 들어가 있어 매우 복잡했다. 메서드를 분리하고, 이름을 잘 지어야 나중에 코드를 봐도 잘 이해할 수 있다는 것은 알고 있었지만, 해커톤과 공모전 같이 제출이 끝난 후에는 리팩토링 하지 않을 개발만 하다보니 현재를 위한 개발만 하게 되었다. 결국 사용자를 모집하고, 실제 운영하는 서비스를 개발할 때도 그 습관으로 개발을 하니 리팩토링을 해야 할 때가 와서야 후회하게 되었다. 강의를 통해서 이름을 짓는 방식과 메서드를 분리하는 경계를 어느정도 익혔으니 이제부터라도 미래를 위한 개발을 해야겠다고 생각했다.

 

📌 객체의 책임을 다하게 하자

어느 글에서 'getter를 사용하지 말자'라는 문장을 본적이 있는데 그 때는 "getter가 없으면 객체가 가진 값을 어떻게 검증하지?"라는 생각을 하고 그냥 무시해버렸다. 그때는 객체를 단순히 값을 가진 덩어리로 취급을 했었던 것이다. 객체 지향 언어를 사용해 개발을 하지만 언어의 강점을 너무 무시하며 개발을 하고 있었다. 객체에게 검증을 위임하는 메서드를 만들고, 그 메서드를 통해 의미를 만드는 것이 강력한 기능을 한다는 것을 알게 되었다.

 

📌 SOLID에 대해서

SOLID를 의식하면서 개발을 하지 못했는데 강의를 통해 코드를 직접 쳐보면서 감을 잡을 수 있었다. 특히 단일 책임 원칙에 대해서는 너무 자주 위반한 것을 깨닫게 되어 이 부분을 더 신경쓰며 개발을 해야겠다.

 

📌 Enum 활용법

열거형에 인터페이스를 구현하면 열거형 상수에 메서드를 재정의하여 활용할 수 있는 방법을 알게 되었다.


미션을 통해 배운 것들

📌 Day 2 미션

현실 세계에 있는 추상과 구체들을 생각하고, 그것을 글로 옮기는 작업을 통해서 '추상화'하는 방법에 대해서 감을 잡을 수 있었다. 그리고 추상이 무엇인지 잘 와닿지 않았는데, 이 과정 덕분에 '추상'이란 단어를 이해할 수 있게 되었고, 개발에서 추상의 중요성을 알게 되었다.

 

📌 Day 4 미션

주어진 코드를 리팩토링 하면서 강의에서 배운 '사고의 depth 줄이기', '중첩 분기문을 제거한 early return', '부정어구 사용', '객체에 검증 위임'과 같은 내용을 녹이려고 노력한 결과 이전 코드보다 확실히 깔끔해지고 읽기 쉬운 코드로 리팩토링할 수 있었다.

SOLID에 대해 정리하는 과정에서 각 원칙이 가진 의미와 목표하는 바를 명확하게 이해할 수 있었고, 이를 암기하는 것이 아닌 이해하는게 중요하다는 것을 깨닫게 되었다.

 

출처: Readable Code: 읽기 좋은 코드를 작성하는 사고법

댓글을 작성해보세요.

채널톡 아이콘