오늘은 코드가 안 되는 이유를 찾다가, 조금 더 개발자가 된 기분이 들었던 날입니다.
어제와 같은 동작을 하는데도 코드를 꽤 많이 바꿨습니다. 겉보기엔 비슷한데 속은 완전히 다른 느낌입니다.
자판기 클래스 안으로 기능을 하나씩 옮기고, 제품을 단순한 "정보"가 아니라 하나의 "객체(Object)"로 다루기 시작했습니다.
처음엔 왜 굳이 이렇게 구조를 복잡하게 만들어야 하나 싶었지만, 구조를 바꾸고 나니 코드가 스스로를 설명하기 시작하더군요.
🔍 오늘 가장 오래 붙잡고 있었던 버그: "금액은 왜 그대로일까?"
특히 오늘 가장 오래 붙잡고 있었던 건 '돈이 왜 안 올라가는지'였습니다.
버튼은 분명 눌렸고, 함수도 호출되었으며, LCD도 멀쩡한데 화면의 금액만 요지부동이었습니다.
한참을 헤매다가 깨달았습니다. "아... 값이 안 바뀌는 게 아니라, 바뀐 걸 내가 제대로 못 보고 있었구나."
함수 안에서 변수 이름 하나를 잘못 적어 값이 엉뚱한 곳에 더해지거나, 인터럽트 안에서 바뀐 값이 제대로 전달되지 않았던 찰나의 순간들. 그 과정에서 volatile 키워드의 중요성과 변수의 유효 범위(Scope)를 다시 한번 뼈저리게 느꼈습니다.
💡 말이 아니라 감각으로 배운 '구조'의 힘
인터럽트에서 값이 바뀔 수 있다는 것, 객체가 자기만의 상태를 가진다는 것, 그리고 왜 우리에게 '구조'가 필요한지... 오늘은 활자가 아니라 감각으로 조금 알게 된 것 같습니다.
- 클래스 캡슐화: 자판기(VendingMachine)가 자신의 돈(currentMoney)을 스스로 관리하게 만들었습니다.
- 객체 간의 상호작용: 이제 자판기는 음료라는 객체를 품고, 스스로 동작합니다.
버튼 선택 로직까지 다 구현하면 더 좋았겠지만, 오늘은 여기까지 하기로 했습니다.
끝까지 붙잡고 있었던 것만으로도 충분히 잘한 하루니까요.
🌙 글을 마치며
코드를 깨끗하게 정리해 두고, LCD에 남아 있는 숫자를 한 번 더 보고 조용히 전원을 껐습니다.
내일의 나는 오늘보다 덜 헤매겠지요. 비록 조금 헤맨다 해도 괜찮습니다. 오늘 하나라도 제대로 봤으니까요.
오늘도 성장 완료입니다.
#Arduino #아두이노프로젝트 #자판기만들기 #객체지향코딩 #임베디드개발 #개발일기 #회고 #성장기록