1. 코드 스타일과 네이밍 규칙 준수 확인
• 일관성: 코드 스타일과 네이밍 규칙이 일관성 있게 사용되었는지 확인합니다. Unity는 특정 규칙에 강제되지 않지만, 팀에서 정한 네이밍 규칙을 따라야 합니다.
• 파일 및 클래스 구조: 파일명, 클래스명, 메서드명이 해당 역할을 명확히 설명하는지 확인합니다.
2. 성능 최적화 점검
• Update 메서드 최소화: 불필요한 Update 호출을 줄이고 가능한 경우 이벤트 기반으로 전환하도록 유도합니다. Update 메서드는 프레임마다 호출되기 때문에 성능에 큰 영향을 줄 수 있습니다.
• Garbage Collection: 런타임 중 메모리 할당이 과도하게 발생하지 않는지 확인합니다. 특히, Instantiate와 Destroy는 주의 깊게 다뤄야 하며, Object Pooling을 권장합니다.
• LINQ 사용: LINQ는 코드 가독성을 높이지만, 성능 이슈를 일으킬 수 있습니다. 런타임에서 자주 호출되는 코드에서는 LINQ 사용을 자제하는 것이 좋습니다.
3. 구조와 아키텍처 검토
• 컴포넌트 분리: 각 스크립트가 단일 책임 원칙(Single Responsibility Principle)을 따르고 있는지 확인합니다. 복잡한 기능은 여러 개의 스크립트로 분리하고, 공통 기능은 별도의 유틸리티 클래스로 만들어 재사용성을 높입니다.
• 의존성 관리: 의존성 주입(Dependency Injection) 또는 서비스 로케이터(Service Locator) 패턴을 사용하여 클래스 간의 결합도를 낮추었는지 확인합니다.
• 스크립트 실행 순서: Unity에서 스크립트의 실행 순서가 중요한 경우, 해당 의존 관계를 명확히 하여 실행 순서의 불확실성을 최소화했는지 검토합니다.
4. 유닛 테스트와 검증
• 테스트 가능한 코드 작성: 코드가 테스트 가능한 구조인지 확인합니다. 예를 들어, 로직을 쉽게 유닛 테스트할 수 있도록 비즈니스 로직을 MonoBehaviour에서 분리하는 것이 좋습니다.
• 테스트 커버리지: 주요 기능에 대해 유닛 테스트가 작성되어 있는지, 테스트 커버리지가 충분한지를 확인합니다.
5. 리소스와 메모리 관리
• 메모리 사용량: 메모리 누수 가능성이 있는지를 검토합니다. 특히, 이벤트 리스너나 delegate가 제대로 해제되지 않으면 메모리 누수로 이어질 수 있습니다.
• 프리팹 관리: 프리팹의 사용이 적절하게 이루어졌는지, 불필요한 프리팹 생성 및 삭제가 반복되지 않는지 확인합니다.
6. 비동기 및 멀티스레드 코드
• 코루틴 사용 검토: 코루틴의 사용이 적절한지, 불필요한 코루틴이 지속적으로 실행되고 있지는 않은지 확인합니다.
• 비동기 프로그래밍: async와 await를 사용하는 경우, 비동기 메서드가 메인 스레드에서 적절히 실행되고 종료되었는지 확인합니다.
7. 유지보수성과 확장성 고려
• 코드의 유연성: 향후 변경이 필요할 때 쉽게 수정할 수 있도록 유연하게 작성되었는지 검토합니다.
• 재사용성: 코드의 모듈화가 적절히 되어, 필요할 때 다른 프로젝트나 기능에 재사용할 수 있는지 검토합니다.
8. UI 코드 리뷰
• UI 업데이트 최소화: UI의 업데이트가 필요한 상황에서만 이루어지도록 최적화가 되었는지 확인합니다.
• 오브젝트 풀링: UI 요소 생성 및 삭제가 빈번히 발생하는 경우, 오브젝트 풀링을 통한 성능 최적화가 되어있는지 확인합니다.
9. 오류 처리 및 로그
• 에러 핸들링: 예상 가능한 오류에 대한 처리 코드가 작성되어 있는지 확인합니다.
• 디버깅 로그: 디버깅용 로그가 최종 빌드에 포함되지 않도록 주의하고, 중요 로그에는 로그 레벨을 설정해 필요 시 필터링할 수 있도록 합니다.
'Unity' 카테고리의 다른 글
(Unity3D) Mono와 IL2CPP에 대해 (0) | 2024.07.10 |
---|---|
유니티 스크롤 반응형 페이드아웃 구현 (0) | 2024.06.14 |
<Unity> Scroll Rect를 사용해서 무한 스크롤 직접 구현하기 (0) | 2024.06.12 |
유니티 게임 종료 테스트 편의성 추가 코드 (0) | 2024.05.20 |
유니티 스크립트 실행 순서 설정하기 (0) | 2024.05.20 |