개요
저희 회사에서 AI 코딩을 이용해 제가 간단히 만든 이미지 판정 프로그램이 있습니다.
소스 코드 : https://drive.google.com/file/d/1sfCMVzhr_wmu3ZqfbxEPsQ-_c1buNGPb
※ 지난글에서 소개한 이미지 판정(흰색 오염 판정) 로직 외에 두가지 로직이 추가되어 있습니다.
(경계선의 선형 완결성 판정, 흑점 검출 판정)
※ 참고 이전글
https://www.gpters.org/dev/post/determination-defective-product-images-HzGwJZluRDLyU26
https://www.gpters.org/dev/post/determination-defective-product-images-sosI4iWn0CXHrRn
이 코드는 실행하게 되면 다음과 같은 GUI창이 뜨면서 크게 3종류의 이미지 판정을 할 수 있게 로직이 구성되어 있습니다.
당장 회사에서 사용해야 하는 꼭 필요한 기능은 모두 구현되어 있었고 사용에 불편함은 없었지만, 소스코드를 관리하는 제 입장에서는 불편한 점이 몇가지 있었습니다.
필요할 때마다 AI 코딩툴을 통해 코드를 추가하다 보니 각각의 코드들이 따로 노는 모양이었습니다. (최소한의 기능 구현 후 최대한 정리했지만 부족함이 많았습니다.)
폴더/파일경로에 대한 관리, 파라미터에 대한 관리도 최대한 패키지화 한 GUI 로 정리했지만, 그럼에도 호출시에서는 각각의 번호로 호출해서 가독성이 좋지 않았습니다.
비슷 비슷한 구조의 코드가 반복되어서 한번 수정이 발생하면 반복되는 코드를 모두 다시 바꿔야 하는 어려움이 있었습니다.
앞으로도 기능은 계속 추가될 예정인데(현업에서 이미지 판정이 필요하다는 로직이 생길 때마다 조금씩 기능은 추가될 것 같습니다.) 점점 코드가 복잡해져서 구현이 점점 어려워 졌습니다.
이와 같은 문제점을 모두 한번에 해결해 보고자 Code Refactoring을 진행해 봤습니다.
Code Refactoring : 리팩터링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능 을 추가하는 행위는 아니다.
AI 활용 상세
이전에 genspark을 활용하여 GitHub Copilot과 Cursor의 차이점을 분석했었습니다.
https://www.gpters.org/dev/post/asked-genspark-cursor-vs-NbhjOaUx2fWINvR
당시 내린 결론으로 "리팩토링에는 Cursor가 더 유리하다." 였으므로, Cursor를 이용하여 리팩토링을 진행하였습니다.
Cursor의 Composers를 띄워두고, Refactoring을 하고자 하는 코드를 올려둔 상태에서 간단히 지시했습니다.
코드를 리팩토링해줘
그 결과 다음과 같은 응답을 확인할 수 있습니다.
그리고, Composers 좌측에도 다음과 같이 4개의 파일이 만들어진 것을 확인 할 수 있었습니다.
코드 내부 구조를 살펴보니, 주요 변수 선언 및 코드의 큰 틀까지는 구조적으로 잘 구성되게 변경된 것을 볼 수 있었습니다.
다만, 메인 기능 부분은 상세 코드가 채워져 있지 않았습니다.
다시 다음과 같이 지시를 했습니다.
기존 코드의 내용으로 프레임 생성 로직, 위젯 생성 로직, 파라미터 업데이트 로직도 코딩해줘
기존 로직의 내용으로 Simple Judge 로직, Line Judge 로직, Dot judge 로직 코드를 완성해줘
이렇게 2번의 지시를 추가하고 나자 코드 내부까지 채워진 것을 확인할 수 있었습니다.
Accept All을 클릭한 다음 "main.py"파일을 실행해 보니, 이번에는 에러가 발생하는 것을 확인할 수 있었습니다.