쉬운·기술사전비유로 이해하는 AI·개발 용어
개발자처럼 생각하기

리팩토링

Refactoring

코드가 하는 일은 그대로 두고, 내부 구조만 정리하는 작업이에요.

리팩토링 개념 다이어그램

주방 서랍 하나쯤 다들 아실 거예요. 배달 메뉴판, 방전된 건전지 세 개, 이미 바꾼 폰 충전기, 그리고 집에서 유일하게 쓸 수 있는 가위가 어딘가에 묻혀 있죠. 서랍은 작동해요. 가위도 찾을 수 있어요. 다만 매번 90초와 약간의 행운이 필요할 뿐이에요.

리팩토링은 어느 오후 그 서랍을 뒤집어 털어 정리하는 일이에요.

자체는 달라지지 않아요. 서랍을 하나 더 만든 것도, 쓸 만한 것을 버린 것도 아니에요. 다음에 손을 뻗으면 2초 만에 원하는 걸 잡을 수 있게 만든 거예요. 코드도 마찬가지예요. 리팩토링은 코드의 내부 구조를 바꾸는 것이지, 겉으로 드러나는 동작을 바꾸는 게 아니에요. 버튼도 같고, 동작도 같고, 사용자가 보는 결과도 같아요. 달라지는 건 딱 하나, 다음에 작업할 때 얼마나 편한가예요.

겉으로 아무것도 안 바뀌는데 왜 하냐고요? 어수선한 코드는 조용히, 끊임없이 비용을 청구하기 때문이에요. 처음 만드는 것치고 깔끔한 것은 드물어요. 파악하면서 덧붙이고, 또 덧붙이게 돼요. 6개월 뒤에는 "작은" 수정 하나가 열한 군데를 건드리고, 어디 하나 손댈 엄두가 안 나요. 그게 바로 그 서랍이에요. 돌아가긴 하는데 손 넣기가 두려운 상태요.

아무도 잘 말해주지 않는 부분이 있어요. AI로 개발할 때, 리팩토링은 이제 개발자만의 일이 아니에요. 원하는 걸 설명하면 AI가 코드를 쓰고, 다음으로 넘어가요. 한 주 동안 그렇게 하면 돌아가긴 하는데 테이프로 이어 붙인 덩어리가 쌓여요. AI는 "작동하게"를 목표로 최적화했지, "살기 좋게"를 목표로 하지 않았거든요. 그래서 가끔 멈추고 이렇게 말해야 해요.

이 코드는 작동합니다. 뭔가 추가하기 전에, 동작은 그대로 두고
코드를 정리해 주세요. 결과는 같되, 더 깔끔하고 따라가기 쉽게.

이 한 문장이 리팩토링 요청이에요. 효과는 바로 나와요. 깔끔한 코드베이스는 AI 자신도 더 잘 탐색해요. 어수선한 서랍은 AI도 우리만큼이나 헤매게 만들거든요.

기억해 두면 좋은 게 두 가지 있어요. 크게 한 번보다 작게 자주 하는 게 나아요. 숙련된 개발자들은 "리팩토링 주간"을 따로 잡지 않아요. 조금씩 정리해 가면서 쌓이지 않게 해요. 그리고 리팩토링은 기능 추가도, 버그 수정도 아니에요. 사람들이 잊고 사는 세 번째 일이에요. 이미 있는 것을 바꾸기 쉽게 만드는 일. 계속 미루면 앞으로 만들 기능 하나하나가 더 비싸져요.

서랍은 아직 그냥 어지러울 때 정리하세요.