인프런 워밍업 클럽 2기 백엔드 - 발자국 1주차

인프런 워밍업 클럽 2기 백엔드 - 발자국 1주차

인프런 워밍업 클럽 2기 발자국 1주차


1. 한 주의 정리

박우빈님의 읽기 좋은 코드를 작성하는 사고법을

섹션1 ~ 섹션5까지 들었다.

양으로 보면 적지 않았으나, 내용의 큰 어려움은 없어 강의를 보는 것에 부담은 없었다.

편하게 보고 생각을 좀 많이 하게 되는 강의이다.

한 주간 강의를 복기해보자.

섹션 2. 추상

추상에서는 클린 코드를 추구하는 이유와 추상화 과정에 대해 학습했다.

추상화를 거치는 사고 과정 그리고, 단어(변수, 메서드 이름, 클래스 이름 etc.,)

와 메서드 그 자체를 추상화 시키는 것에 대해 학습했다.

 

섹션 3. 논리, 사고의 흐름

논리,사고의 흐름 섹션에서는 추상적인 기법 대신에 조금 더 밀접하게 관련이 있는 것들에 대해 학습했다.

예를 들어 Early return 이라든 지 indent를 줄이는 등,

 

개발자가 개발하는 입장에서보다 읽는 입장을 고려하여 사고를 최대한 적게, 그리고 직관적으로 코드를

이해할 수 있도록 짜는 방법에 대해 학습했다.

 

섹션 4. 객체 지향 패러다임

객체 지향 패러다임 섹션은 객체를 설계하고 지속 가능하고 읽기 좋은 객체로 발전해나가는 방법에 대해 학습했다.

 

기본적으로는 SOLID에 근간을 두어 설계 했으나, 객체 그 자체가 적절한 책임과 역할을 수행할 수 있도록 만드는 것이 중요했다.

 

섹션 5. 객체 지향 적용하기

섹션5에서는 4에서 만든 객체를 토대로 활용하는 것을 학습했다.

상속과 조합

VO

일급 컬렉션

Enum

Interface 활용과 같이 조금은 어려울 수 있으나 제일 흥미로운 부분이었다.

사실 이 부분을 어떻게 극한까지 활용하느냐가 자바 개발자의 실력 중 하나이지 않을까? 하는 생각도 했다.


2. 두 개의 미션

이번 주차는 간단한 사고를 하는 미션 한개와 그리고 직접 해보는 미션 한 개가 주어졌다.

어떤 방식으로 접근했고 해결 했는 지에 대해 복기하자.

 

추상화

첫 번째는 추상화 미션이다.

 

추상 : 부동산 - 자산의 개념으로 추상화 됨 구체 :

1. 아파트 - 특정 위치에 있는 주거용 건물로, 가족 단위의 주거 공간을 제공하며, 시장에서 거래되는 금전적인 정량 지표가 있음

2. 상업용 빌딩 - 기업이나 상점이 운영되는 공간으로, 임대 수익을 창출할 수 있는 자산

3. 토지 : 개발 가능성이 있는 임야

... 등 다양한 자산을 추상화하여 묶어서 부동산으로 표기

 

나는 위와 같이 이 미션을 제출했는데, 일반적인 제출자들과는 좀 다른 방식으로 접근한 것 같다.

많은 분들이 추상화 - 구체화에 대해 중점을 두었는데,

나는 이걸 인터페이스와 같은 느낌으로 접근하고 해결했다.

부동산이라는 인터페이스에 다양한 구현체가 있다. 여기서 일단 한번 추상화가 들어간다.

그리고 부동산이라는 것 자체도 말 그대로 업무를 진행하는 장소인 그것이 있고,

경제적 가치를 아우르는 부동산이라는 개념이 또 존재한다.

여기서 또 한 번의 추상화가 들어간다.

 

나는 이 개념이 굉장히 추상화 레벨이 높은 고수준의 추상화라고 생각했기에 제출했다.

 

리팩토링 & SOLID에 대해 나만의 정리

이 부분은 많이 길기에 따로 블로그에 빼서 작성을 했다.

그러나 간략히 요약하자면,

이 미션도 최대한 주어진 것에 만족하고 그 이상의 것을 덜어내려 노력했다.

첫 번째로 섹션3을 토대로하는 배경이 있기에 3에서 다루지 않은 방식들은 시도하지 않았으며,

SOLID에 대한 정리는... 나 스스로는 사람마다 정리가 다르다면 원칙이 아니지 않나? 라는 생각으로

SOLID를 실천하는 나만의 방법..? 이런식으로 접근하여 작성했다.

 

이-공계에서 흔히 정리, 이론, 원리, 정의등 비슷한 뉘앙스의 단어가 많다.

면밀히 살피면 그 뜻이 조금씩은 다르다.

 

우리가 다룬 SOLID는 principle을 약어로 쓴다.

원리(原理, principle)는 사물이나 현상의 근본이 되는 이치로 기초가 되는 근거 또는 보편적 진리

위와 같은 내용이 principle의 사전적 정의이며, 이렇기에 나는 나만의 정리가 아닌 나만의 실천 방법으로 이 미션을 접근 한 것이다.

 

https://romanc3.tistory.com/130
위 내용은 따로 블로그에 작성해뒀다.


🤔 내 생각을 정리하자면

섹션 5까지 듣고 생각을 정리하자면, 섹션 2와 3은 조금은 더 사고와 밀접하고

4와 5는 기법에 가깝다는 생각을 했다. 물론 사고도 포함 하겠지만 말이다.

 

여기까지 들으면서, 새로운 사고법과 그리고 객체를 만드는 다양한 관점을 알 수 있어서 좋았다.

이것은 비단 강의 뿐만 아니라 워밍업 클럽을 통해 다양한 사람들의 해결 방법을 볼 수 있다는 것이 큰 장점 이지 않았나 싶다.

 

반면에 아쉬웠던 점은 무릇 이러한 부분들이 다 그렇듯 체화 하기가 어렵다는 점이다.

마치 가끔씩 쓰는 단축키 처럼 평소에는 까먹고 필요할 때 다시 찾아본다. 분명 그 단축키가 유용함에도 말이다.

 

그럼에도 아예 존재를 모르는 것과 아! 그런게 있었지? 하고 생각이 나는 것은 다른 부분이라 생각한다.

이 강의를 통해 그런 것을 미리 알아가는 것은 분명 좋은 경험이다.

 

앞으로는 한번 씩 해서는 체화 시키기 힘든 이러한 부분들은 의도적으로 계속 생각하고 따로 간단한 기능들을 만들어가면서 훈련해봐야겠다는 생각을 한다.

댓글을 작성해보세요.

채널톡 아이콘