이 글은 FINPC U-Space 고급 프로그래밍 과정을 진행하며 배운점과 느낀점,
배우면서 필요에 의해 공부했던 기술들을 정리 하기 위해 작성하였습니다.
블로그의 초록색 링크를 누르면 관련 페이지로 이동합니다.
지인을 통해 우아한 테크코스와 같은 수업이 부산에서 열린다는 것을 알게 되었다😀
소식을 접하기 약 3주전 강의를 진행하는 박재성(Jason)님의 TDD 페어 프로그래밍을 줌으로 보며 공부를 한 적이 있었고
실력을 쌓기에 이보다 더 좋은 기회는 없다고 생각하여 참가하게 되었습니다~~
총 8주간의 교육 과정에서 코드리뷰를 위한 깃 사용법, 페어 프로그래밍 하는법, 단위 테스트, TDD, FP, OOP 그리고 클린코드를 작성하기 위한 리펙터링을 배우게된다.
또한 미션이 진행되면서 아래와 같은 프로그래밍 요구사항이 하나씩 추가된다.
요구사항이 추가됨에 따라 코드 짜기가 점점 어려워진다😂ㅠㅠ
for 문 안에 if를 못쓰다니.. 말이 되나?
0주차는 교육 과정을 진행 할 수 있는 역량을 판별하기 위해 내준 미션의 코드를 피드백하고 앞으로 진행하기 위해 필요한 깃으로 코드리뷰하기 페어프로그래밍 하는법과 단위테스트 방법을 배웠다.
1~2주차는 TDD를 시작하기전 테스트 코드 작성을 위한 단위 테스트를 배웠다.
<문자열 계산기>와 <1단계 - 자동차 경주>를 페어 프로그래밍으로 진행 했으며 코드 리뷰를 통해 1차 피드백을 받게 되었다.(1주차 내 코드리뷰과정은 링크(1주차 리뷰 정리) 참고 )
1차 피드백 후 <2단계 - 자동차 경주 리팩터링>을 피드백을 기반으로 진행 했으며 여기서 부터 클린 코드를 위한 개념들(네이밍 방법, 객체의 책임)이 등장하기 시작한다.
코드 리뷰에서 네이밍 관련 피드백을 엄청 받았는데 정말 어렵다...
2~4주차는 대망의? TDD를 시작하게 되었다😁 (내 TDD의 진행과정은 링크 참고)
<문자열 덧셈 계산기>와<1단계 - 로또(자동)>을 페어 프로그래밍으로 진행했으며 코드 리뷰를 통해 1차 피드백을 받게 되었다.
접근 제한자, 방어적 복사, primitive 타입, reference 타입, 다형성을 고려하라, 객체의 책임, 클래스분리를 통한 리팩토링 기법(일급 컬렉션, 원시값 포장, 함수의 인자값 최소화)이 주요 내용이었으며
2주차 부터 디자인 패턴(MVC 패턴, 전략 패턴)들이 등장하기 시작한다.
4~6주차는 함수형 프로그래밍의 중요성과 함수형 프로그래밍의 중요성때문에 등장한 자바8의 스트림, 람다
,Optional을 공부하고 상속과 인터페이스를 활용한 코드 추상화로 코드의 중복을 제거하고 이를 실제 코드에 적용해 보는 주차였다.
리뷰의 주요 내용으로 일급 객체의 활용, 인터페이스와 클래스상속, 앱스트랙트 클래스 상속사용에대한(추상화 잘 하기)고민, 인스턴스 생성의 최소화(캐싱)에대한 고민과 상태패턴 등이 등장했다.
교육이 막바지로 접어들게 되면서 이전 까지 학습했던 TDD를 어떻게 하면 현장에 적용을 시킬 수 있을까??
지속적인 리팩토링을 하기 위한 방법, 테스트하기 어려운 부분(랜덤한 값에 의존, 디비에 의존하는 코드)등에 대한 방법에 대해 공부하고 피드백을 받는 시간이 었다.
여기서 학습한 방법으로 현재 진행중인 프로젝트에 적용해 보며 연습을 할 예정이다.