바이브시대의 클린 코딩이란
2026. 4. 12. 16:30ㆍ소마일기
1. Test Case(테스트 케이스)와 TDD(테스트 주도 개발)
- Test Case: 특정 기능이 정상적으로 동작하는지 확인하기 위해 입력값, 실행 조건, 그리고 기대하는 결과값을 명시한 명세서입니다. 예를 들어, 타로 서비스에서 "유저가 생년월일을 입력하지 않았을 때 에러 메시지가 출력되는가?"라는 질문에 대한 입력값과 예상 결과가 하나의 테스트 케이스가 됩니다.
- TDD (Test-Driven Development): 코드를 먼저 짜는 것이 아니라, 테스트 코드를 먼저 작성하고 이를 통과시키기 위한 최소한의 실제 코드를 짜는 개발 방식입니다.
- Red: 실패하는 테스트 케이스를 먼저 작성합니다.
- Green: 테스트를 통과할 정도의 실제 코드를 작성합니다.
- Refactor: 기능은 유지하되 코드 구조를 깔끔하게 다듬습니다.
- 효과: 버그가 줄어들고, 나중에 모델 엔진을 교체하거나 리팩토링할 때 기존 기능이 망가지지 않았는지 즉시 확인할 수 있습니다.
2. 멤버 변수 (Member Variable)
- 클래스(Class)라는 설계도 내부에 선언되어, 그 클래스로부터 만들어진 객체(Instance)가 가지는 고유한 데이터를 의미합니다.
- 예를 들어 ActionDetector라는 클래스가 있다면, 감지 중인 current_frame이나 정확도 임계값인 threshold 등이 이 클래스의 멤버 변수가 됩니다. 이 변수들은 클래스 내부의 여러 함수(메서드)에서 공유하며 사용할 수 있습니다.
3. 파이썬의 표기법: 스네이크 케이스 (Snake Case)
- 파이썬은 공식적으로 스네이크 케이스(snake_case)를 권장합니다. (PEP 8 가이드라인)
- action_detection_model, get_user_data 처럼 모든 글자를 소문자로 쓰고 단어 사이를 언더바(_)로 연결합니다.
- 카멜 케이스(camelCase): actionDetectionModel 처럼 두 번째 단어부터 대문자로 시작하며, 주로 자바스크립트나 자바에서 사용합니다.
- 참고: 파이썬에서도 클래스명은 ActionDetector처럼 단어 첫 글자를 대문자로 하는 **파스칼 케이스(PascalCase)**를 사용합니다.
4. 코드 리뷰 (Code Review)
- 작성한 코드를 동료 개발자가 검토하며 품질을 높이는 과정입니다.
- 어떻게 하나요?
- 논리적 오류 확인: "이 조건문에서 예외 처리가 빠진 것 같아요."
- 가독성 및 컨벤션: "변수명이 스네이크 케이스를 따르지 않았네요."
- 효율성: "이 부분은 루프를 돌기보다 벡터 연산(NumPy)을 쓰면 더 빠를 것 같습니다."
- 피드백 문화: 비난이 아니라 **'더 좋은 제품'**을 만들기 위한 협업 과정임을 인지하고, 건설적인 의견을 주고받는 것이 핵심입니다.
5. SOLID 원칙
객체 지향 설계(OOP)를 할 때 유지보수가 쉽고 확장성이 좋도록 지켜야 하는 5가지 원칙입니다. 시스템의 규모가 커질수록 이 원칙들의 중요성이 체감됩니다.
- SRP (단일 책임 원칙): 하나의 클래스는 하나의 책임만 가져야 합니다. (예: 모델 로드와 영상 전처리는 별도의 클래스로 분리)
- OCP (개방-폐쇄 원칙): 확장에 대해서는 열려 있어야 하지만, 수정에 대해서는 닫혀 있어야 합니다.
- LSP (리스코프 치환 원칙): 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 합니다.
- ISP (인터페이스 분리 원칙): 사용하지 않는 메서드에 의존하도록 강제해서는 안 됩니다.
- DIP (의존성 역전 원칙): 구체적인 클래스보다 추상화된 인터페이스에 의존해야 합니다.
아래 대화형 도구를 통해 각 원칙이 실제 코드 구조에서 어떻게 적용되는지 직접 확인해 보세요.
시각 자료 표시
6. 리팩토링 (Refactoring)
- 외부의 동작(기능)은 그대로 유지하면서, 내부의 코드 구조를 개선하는 작업입니다.
- "동작하니까 그냥 두자"가 아니라, 가독성을 높이고 중복을 제거하여 나중에 코드를 수정하기 편하게 만드는 과정입니다. TDD의 마지막 단계이기도 합니다.
7. GitHub Actions (깃허브 액션스)
- GitHub에서 제공하는 CI/CD(지속적 통합/지속적 배포) 자동화 도구입니다.
- 예를 들어, git push를 하면 자동으로 테스트 코드를 실행하고, 성공하면 AWS EC2 서버에 모델 가중치와 백엔드 코드를 자동으로 배포하도록 설정할 수 있습니다. 수동으로 하던 반복 작업을 자동화해 줍니다.
별개로 들은 것들
1. 수파베이스 (Supabase)
- 오픈소스 파이어베이스(Firebase) 대안으로 불리는 백엔드 서비스(BaaS)입니다.
- 강력한 PostgreSQL 데이터베이스를 기반으로 하며, 유저 인증(Auth), 실시간 DB 업데이트, 파일 스토리지 기능을 API 하나로 쉽게 사용할 수 있게 해줍니다. 특히 Flutter와 연동성이 좋아 AI 앱의 백엔드로 자주 선택됩니다.
2. 앰플리튜드 (Amplitude)
- 서비스의 사용자 행동을 분석하는 데이터 분석 플랫폼입니다.
- 단순히 '방문자 수'를 보는 게 아니라, "AI 타로 결과를 본 유저 중 몇 퍼센트가 다시 앱을 켰는가?(리텐션)", "어떤 기능에서 유저가 가장 많이 이탈하는가?(퍼널)" 등을 심도 있게 분석하여 서비스 개선의 근거를 마련해 줍니다.
반응형
'소마일기' 카테고리의 다른 글
| 개발 협업 툴 (0) | 2026.04.15 |
|---|---|
| ai 비서 만들기 맥 미니 초기 세팅 (0) | 2026.04.14 |
| 바이브시대의 클린코딩이란2 (0) | 2026.04.13 |