???: (리팩토링) 누군가는 해야 하잖아. (항해 플러스 프론트 6기 회고 4️⃣주차)

허정석·2025년 8월 3일

WIL

목록 보기
4/9
post-thumbnail

🍝 나 (aka. Spaghetti Chef) + AI = 🗑️

유쾌한_클린코드

클린 코드라는 것을 직접적으로 체험 해보지 못 했었다. 회사 업무에서도 마냥 흘려 듣기만 했다.
그리고 내가 코드를 짜면서도 '그냥 보기 좋고 깔끔하게 짜면 되는거 아냐?'
(개발자가 봤을 때 불편하지 않게..) 라는 생각으로 코드를 만들었다.

과제를 하면서 정말 더닝크루거효과 를 제대로 느꼈다.
(나는 정말 무식하게 용감하게 코드를 짰구나. 정말 앞뒤 맥락 없이!)

그리고 이번 주차 과제를 하면서 클린코드로 만들기 위한 리팩토링을 진행을
AI-FULL-DRIVEN 정말 모든 행위를 AI로 진행했다.(의존이 맞다.) 테오 멘토링에서 아마 그렇게 하면 정말 절망을 맛 볼 것이다. 라고 했는데 속으론 에이..아무리 그래도 잘 해주겠지. 라는 마인드로 과제에 임하고 있었다.

그리고 진짜 코드가 절망이긴하다....
이런 절망을 품으면서 어떻게 내가 4주차를 이어나갔는지 설명하겠다.


👨‍💻 🔁 🤖 나는 AI 를 어떻게 활용 했을까?

코드 컨벤션 주입 💉

처음에는 Gemini CLI 를 활용하여 1~3주차 처럼 과제를 진행하려고 했다.
우리 5팀 유현님도 Gemini 활용법에 대해서 디스코드에 남겨줘서 활용을 해보려고 헀는데.. 도저히 진도를 못 나가서 커서를 구독하게 됐다. (그냥 내가 활용 못하는건데 도구 탓 하는거 맞음 ㅎㅎㅎ)

커서에는 컨텍스트를 설정할 수 있는 옵션이 있다. (토큰을 많이 먹는 옵션..돈과 편리함 등가교환..)

컨텍스트 알고리즘

컨텍스트 알고리즘

AI 에게 프로젝트의 맥락을 파악하게 해서 원하는 혹은 그 뒤에 올 정보들을 제공해준다. 그래서 docs/** 하위 필수 요구사항 및 클린코드에 해당하는 문서를 취합한 파일, 2팀 도은 이 만든 가이드라인 그리고 토스 프론트엔드 가이드라인 기반으로 만든 Cursor rule을 활용했다.
그리고 진도를 빨리 빼기위해 agent 모드를 활용하여 이번 과제에 임했는데 다음에는 ask 모드를 이용하여 과제를 진행해보겠다. 궁금하다. 과연 퀄리티가 달라질지......

기본 개념

구분AgentAsk
정의Cursor에서 제공하는 AI 기반 자동화 도구Cursor에서 제공하는 단일 질문-응답 형태의 AI 지원 기능
특징• 자율적인 AI 어시스턴트
• 복잡한 작업을 여러 단계로 분해
• 코드베이스 컨텍스트 유지
• 일회성 응답 제공
• 특정 질문에 대한 즉각적 답변
• 간단한 코드 설명 및 생성

🔍 주요 차이점

구분AgentAsk
작업 지속성🔄 여러 단계의 작업을 연속적으로 수행하며 컨텍스트 유지⚡ 단일 질문에 대한 일회성 응답 제공
자율성🎯 사용자가 정의한 목표를 달성하기 위해 자율적으로 작업 계획 및 실행사용자의 직접적인 질문에만 응답, 추가 작업은 사용자 지시 필요
복잡성 처리🧩 복잡한 작업을 여러 단계로 분해하여 처리 가능단일 컨텍스트 내에서 처리 가능한 작업에 적합
코드베이스 이해🔍 전체 코드베이스를 더 깊이 이해하고 파일 간 관계 파악📄 현재 열린 파일이나 제공된 코드 조각에 대한 이해에 중점
사용 방식🎯 목표를 설정하고 AI가 작업을 수행하도록 함❓ 특정 질문을 하고 즉각적인 응답을 받음

🔗 컨텍스트 작업

마일스톤 🗿

머릿말에서도 애기했지만 나는 AI-FULL-DRIVEN 으로 과제를 진행을 했어서 내 스스로가 코드를 바꾼적이 단 한번도 없다. 진짜로.... 맹세코.....
이런 이유로 나는 안전장치가 너무나 필요했다. 이건 AI 활용보다는 활용을 잘하기 위한 나의 동작을 제어했다. (Cursor Rules 처럼)

나는 컨벤션에 맞게 또는 그 상황에 맞는 유연한 방식으로 기능별 또는 구조별로 커밋을 진행했고 방향성을 잃지 않기 위해서 AI에게 현재 하는 작업이전의 작업을 비교하면서 앞으로의 작업을 도출해냈다. 그리고 커밋을 하기 전에 꼭 테스트를 진행하여 요구사항을 만족하도록 했다.

버즈_이미지

테오의 마일스톤 설명

나의 커밋 내역과 단계별 진행 사항 요약본

🔗 4주차 과제 커밋 내역 (클린코드)

진행 사항 요약
🔧 리팩토링 기간 (7월 28일 ~ 8월 1일)

📌 시작점
처음 코드를 봤을 때 구조가 꽤 복잡했고, main 함수 하나에 이벤트 처리부터 상태 변경, 
비즈니스 로직까지 전부 몰려 있었음. 가독성도 떨어졌고 유지보수가 어려운 상태.

🧹 1 단계 – 코드 정비 & 구조 개선

* Prettier + Airbnb ESLint로 스타일 통일

* 전역 변수 제거, 변수 선언부 변경 (var ➡️ let, const)

* 함수/변수명 의미 있게 변경

* main 함수에서 이벤트 핸들러랑 로직 분리 시도

🧩 2 단계 – 모듈화 진행

* 상태 직접 접근 대신 get/set 함수 도입

* 타이머, 포인트, 할인 로직을 각각 모듈로 분리
(promotionScheduler, discountService, loyaltyService)

* 중복된 DOM 조작 헬퍼 함수로 정리

* innerHTML → DocumentFragment로 성능 개선

⚛️ 3 단계 – React + TypeScript 도입

* Vite 기반 React/TS 환경 구축

* 기존 JS 로직은 그대로 두고, UI만 React로 마이그레이션

* CartItem, OrderSummary 등 컴포넌트 분리

* GitHub Actions로 자동 배포 구성

🧼 4 단계 – 코드 품질 향상

* 매직 넘버 제거, 상수로 정리

* 커스텀 훅 (useCart, useModal) 도입

* 비즈니스 규칙 businessRules.ts로 중앙화

* 타입 강화: any 제거 + 명확한 타입 설계

* 중복 에러 처리 통일 & 긴 함수 분할

Histroy 관리 📑

해당 작업은 어쩌면 나에게 진짜 제일 중요한 작업이라고 볼 수 있었다.
내가 생각하기에 AI-FULL-DRIVEN 에서 제일 중요한건 계속 얘기하지만 방향성을 잃지 않는 것이다. 요구사항과 현재 과제의 목적을 잃지 않기 위해서 기록에 신경을 많이 썼다.

한 가지 아쉬운건 나의 색깔을 넣어서 히스토리 관리를 했다면 데이터를 토대로 나에게 더 친숙한 방향으로 또는 더 맞는 방향으로 AI가 추천해주지 않았을까? 하는 생각이 있다.

워크 플로어 〰️

  1. 구조 변경 및 기능 구현이 됐다.
  2. 테스트를 실행한다.
  3. 테스트 실패 시 다시 테스트 통과를 위한 원인 파악
  4. 구조 변경 또는 기능 구현에 영향이 없는지 파악 및 수정
  5. 테스트 성공
  6. 히스토리 작성
  7. 커밋

워크플로우


회고를 쓰면서 AI 활용에 관한 글을 찾았습니다.
다들 가볍게 읽어보고 활용은 판단에 맡기겠습니다. 실천은 본인 몫이기에!..
그리고 더 좋은 활용법이 있다면 댓글로 남겨주세요!

🔗 AI시대 개발자가 인간 클립보드 되지 않는 법

글을 읽고 느낀 점.
"아 누군가 나와 비슷하게 생각하고 있구나."
"내가 AI를 활용하는 방식이 크게 엇나가지 않았구나. 그리고 실천해 볼만한 게 더 있구나."


🫣 그리고... 다른 측면의 무식하고 용감했던 주말..

그리고.. 또 다른 무식하고 용감(?)한 행동... 저때 왜 그랬는지 진짜 모르겠다. 과제의 스트레스 였는지? 아니면 그 동안 과제 하느라 잠을 못 자서 나사가 빠졌던거지?

저러고 화면 공유로 콘서트🎸를 열었다.(유튜브 틀었음)
듣기 싫었을 수도 있는데 환호해주셔서 감사합니다.
6기 여러분들 ㅎㅎ..🤘 (실제론 더 많은 사람들이 모였잖슴~~ 환호해줬잖슴~~)

버즈_이미지 버즈_이미지

✅ Keep: 이번주 내가 잘한 것들

  • cursor 결제... (신의 한수)
  • 독서모임 참여
  • AI 비판적으로 사용을 나름대로 실천하고 있었음

❗ Problem: 탈탈 털린 순간

  • 회고에는 쓰지 않았지만 배포 프로세스를 정확히 알지 못해서 몇 시간을 날려먹음.

💡 Try: 노력, 다짐, 실행

  • 의존이 아닌 '학습'의 관점으로 접근하기
    • ask 모드 활용
  • 비판적으로 AI 사용을 더 실천하기

🧠 이번 주 한 줄 회고:

💬: 인간 클립보드 될꺼야???

▶ 허정석님의 추천 코드 : Vo6fpd

15개의 댓글

comment-user-thumbnail
2025년 8월 3일

머야~ 역시 똑쟁이였자네~

1개의 답글
comment-user-thumbnail
2025년 8월 3일

인간 클립보드는 적어주신 글과 자료의 후광에 절하고 갑니다.🙇‍♀️

1개의 답글
comment-user-thumbnail
2025년 8월 3일

아 난 저 발표 단상 같은 데 올라가서 땅울림 한 게 걍 재미밌어보여서 그런 건 줄 알았네 ㅋㅋㅋㅋ

1개의 답글
comment-user-thumbnail
2025년 8월 3일

10주동안 함께하겠다는 째미나이 어디갓누 ㅠㅠ

1개의 답글
comment-user-thumbnail
2025년 8월 4일

회사에서는 프로그래밍 업무를 하고있지도 않고 바쁜 상황에서도 계속해서 WIL를 작성하고, 과제에서도 어떻게든 성장점을 찾아서 나아가려고 하시는거같아서 너무 보기 좋아요(약간 씨몽키 키우기 재질)
모든 상황에서 굉장히 몰입을 하시고 계신 것 같아 괜히 같은 팀인 제가 뿌듯합니다. 앞으로 남은 주차도 잘 부탁드리고 화이팅입니다~

1개의 답글
comment-user-thumbnail
2025년 8월 4일

회고 글에서 매주 성장하는 모습이 보이는 것 같네요 👍

1개의 답글
comment-user-thumbnail
2025년 8월 5일

동기부여 영상 왜 볼까요. jungseokheo.log 보면 되는데..
항상 작업하기 전에 계획을 세우는 모습이 감명 깊습니다.
잘 봤어요!

1개의 답글