성적관리 시스템은 과제를 진행하고도 복습만 4번 이상 한 듯 하다.
학생, 과목, 성적을 관리하기 위해 Dictionary, Set, Array를 사용했는데, 이 구조를 활용하면 정보들을 효율적으로 저장하고 관리할 수 있겠다 라고 생각하며 각 구조가 어떤 상황에서 적합한지에 대해 조금이나마 이해할 수 있었다.
그리고 등록, 과목 추가, 성적 추가 등의 기능을 구현하며 코드의 재사용성을 높이는 훈련이 된 것 같다. 덕분에 코드는 깔끔해졌고 특정 기능을 수정할 때도 나름 편했다. 점점 코드를 읽는게 어렵게 느껴지지만은 않게 됐다고나 할까.
그리고 성적 평균을 계산할 때 guard 를 사용하여 유효한지 검사도 해보았고 조건이 충족되지 않을 경우 일찍 함수가 바로 종료되도록 해서 코드를 약간이나마 줄일 수 있게 됐다.
성적 관리 시스템 구축은 .. 너무나도 어려웠지만 그만큼 이해했을 때의 성취감이 정말 좋았다. 수정에 수정에 수정을 더해서 결국 각각의 기능이 잘 작동하는 것을 확인했을 때 코드의 대한 매력이 눈 앞에 아른 거리는 기분이었고, 무엇보다 문제를 논리적으로 접근하면서 여러 방법으로 해결책을 찾는 연습을 하게 되었다.
하나 욕심이 있다면 class를 좀 더 공부한 뒤에 class를 이용해서 다시 만들어보고 싶다는 정도.
그리고 직사각형의 넓이와 둘레를 계산하는 과제를 진행 할 때 didSet을 통해 잔액이 변경될 때마다 자동으로 특정 작업을 할 수 있다는 점도 처음 배웠다.
잔액이 변경되 전 경고 메시지를 출력해주고 잔액이 0원이나 0원 이하로 되는 것을 막는 기능을 추가하고, 잔액이 음수가 되는 상황을 방지하기 위해 if 조건문을 사용해서 경고 메시지를 출력하는 것도 정말 많이 유용했다. 그래도 해당 작업들을 통해서 코드의 상태를 관리하는 방법을 배우게 된듯 하다. 많이 사용해봐야 많이 응용할 수 있을 것 같다.
마지막으로 이 과정들을 통해 직접 기능이 잘 작동하는 것을 확인했을 때 복잡한 문제를 단계적으로 해결해 나가다보니 결국 진득하게 붙잡고 있으면 해결 되지 않는 일은 없구나 싶더라. 앞으로도 재미있는 과제나 문제에 도전해보고 싶다는 생각도 들었다.
문제 풀이도 중요하지만 앱도 잘 만들어야하니.. 얼른 앱을 만드는걸 배우고 싶지만 기초부터 탄탄히 다져보자라는 마음을 오늘도 되새겨보겠다. 아 TIL도 잘 써야겠다. 매니저님한테 혼나지 않으려면..