본문 바로가기
기타

리팩토링 스터디 #0 - 스터디에 들어가며

by 유세지 2020. 9. 14.

 

꿈에 그리던 복학(비록 등교는 못하고 있지만!) 후 본격적으로 학기에 들어가게 되면서 동아리 선배님들과 스터디를 시작하게 되었습니다. 이제 학교에서 첫 1년을 보내는 20학번 새내기와 이제 막 군휴학을 마치고 복학한 학부생부터, 졸업을 앞두고 있거나 이미 회사에 취업하여 개발자로서의 커리어를 시작하신 선배까지 개개인의 지식 수준의 편차가 큰 편이라 모두가 만족할 수 있는 스터디 주제를 정하는게 쉽지 않아 보였습니다. 특정한 언어에 대해 탐구하거나 공동으로 프로젝트를 진행하기에는 누군가에겐 너무 쉽거나, 너무 어렵게 느껴질 수 있어 적당한 타협점이 뭘까 생각해보았는데 선배님의 추천으로 리팩토링에 대한 내용을 공부해보기로 하였습니다.

 

 

리팩터링 2판, 마틴 파울러 지음

 

 

스터디에서 사용할 교재는 마틴 파울러의 《리팩터링 2판》 이었습니다. 리팩토링에 대해서 초보자들도 이해할 수 있게 잘 설명되어있다고 많은 개발자 분들이 추천하셔서 의심없이 믿고 구매했습니다. 사실 제가 지금껏 복잡한 구조의 코드를 짜거나 규모가 큰 프로젝트를 끝까지 진행해 본 경험이 있지는 않지만, 잘 정돈된 코드들은 큰 프로젝트에서 효율이 높아지는 것이지 그게 작은 프로젝트에서 불필요하다는 의미가 아닐 것임을 어렴풋하게는 느끼고 있었습니다.

 

더군다나 지금껏 제가 만들었던 프로그램들을 다시 돌아보면 기능 구현에 급급하여 확장성과 생산성을 고려하지 않아 나중에 새로운 기능을 추가하려고 해도 어디서부터 시작해야할지 막막한 느낌이 크게 들었습니다. 대표적으로는 메이플 추가옵션 분석기를 개발하며 가장 크게 느꼈던 것 같아요.

 

 

막막함을 넘어 끔찍해진다

 

 

저자는 리팩토링을 겉으로 드러나는 코드의 기능을 바꾸지 않으면서 내부 구조를 개선하는 방식이라고 정의합니다. 보통 프로그램을 만든다고 하면 "설계를 마치고 코딩을 한다" 가 맞는 것처럼 보이는데, 처음 정했던 설계에 맞춘 구조는 코드 수정을 거쳐가며 점점 난잡해지고 첫 의도에서 벗어나게 된다고 말합니다. 위의 스크린샷에 보이는 코드가 바로 그렇습니다. 시작하기 전 생각했던 구조와 코드들이 수정과 추가 작업을 거쳐가며 나중엔 코드를 짰던 장본인인 저조차도 알아보기 어려워진 수준이 되어버린겁니다. 공학에 가깝던 코딩 작업이 서서히 해킹에 가까워진다 고 표현했는데 그 말이 딱 들어맞는 것 같아요.

 

이 책의 특징이라고 하면 대부분의 예시와 설명이 자바스크립트를 이용하여 쓰여져 있다는 것 입니다. 다만 자바스크립트의 리팩토링 이 아니라 프로그래밍 전반에 걸친 리팩토링을 다루기 때문에 자바스크립트에서만 적용가능한 callback, async/await 등의 최적화 기법은 다루지 않습니다. 언어는 의사를 전하기 위한 도구일 뿐이라는 저자의 생각이 느껴지는 것 같았습니다. 자바스크립트는 단순히 많은 개발자들이 보고 이해하기 쉬워서 선택되었을 뿐입니다.

 

개발자가 가장 많이 배우는 언어 자바스크립트, 출처 cio korea

 

 

이 책에서 중요하게 다루는 내용들은 대부분의 시스템 설계에 적용할 수 있기 때문에 자신이 사용하는 언어가 다르다고 좌절할 필요는 없습니다. 리팩토링의 원리를 이해해서 좋은 프로그램을 만들 수 있도록, 나아가서 개발자를 꿈꾸는 다른 분들에게도 좋은 프로그램을 만드는 방법을 알려줄 수 있게 되는 것이 저자의 의도이니 만큼 꾸준히 저의 경우엔 리팩토링 스터디라는 좋은 기회도 생겼으니 기존에 짰던 부끄러운 코드들을 바꿔 주면서 자연스러운 리팩토링 과정을 익히는 것이 이번 스터디의 목표입니다.

 

 

리팩토링 스터디는 매주 한 번씩 업로드 됩니다.

댓글