ATMEGA4809 라는 제목으로, 내가 학부생 시절 수업 시간에 배웠던 ATmega4809를 이용하여 작성했던 펌웨어 코드를 하나씩 보면서 “코드리뷰” 형태로 정리해보는 기록이다.
왜 시작하게 됐나
처음 개발을 하다 보면 일단 돌아가게 만드는 것이 첫 번째 목표가 되기 쉽다. 나 또한 수업을 일찍 끝내고 싶어서, 가산점을 받고 싶어서 일단 돌아가게 만들었던 기억이 있다.
그런데 프로젝트가 조금이라도 커지면 어느 순간부터 다음과 같은 문제들이 생긴다.
- 수정하면 다른 기능에 에러가 생긴다
- 시간이 지나면 내가 봐도 다시 이해하기 힘든 코드
- 수정조차 어렵다
그래서 이 코드리뷰를 진행하면서 내가 실제로 겪었던 코드의 문제점과 개선 과정들을 솔직하게 남기려 한다.
단순히 동작하는 코드가 아니라 잘 짜인 코드를 찾아가는 과정이라고 보면 된다.
진행 방식
각 글은 다음 순서로 진행한다.
- 코드 일부를 가져와서 현재 구조를 설명하고
- 어떤 점이 불편했는지(혹은 위험했는지) 짚고
- 개선 방향을 정한 뒤
- 리팩토링한 결과를 다시 비교해보는 방식
다룰 주제
main구조 (초기화 순서, 루프 구성)- 인터럽트 / 타이머 처리 방식
- UART / I2C / SPI 같은 통신 코드
- ADC / 센서 데이터 처리 (필터링, 캘리브레이션)
마치며
코드를 더 잘 만들고 싶어서 시작한 시리즈다. 비슷한 고민을 하는 분들에게 조금이라도 도움이 됐으면 한다.