
부트캠프 과제를 풀면서, 아직 개념이 확실하게 몸에 익지 않았는데
빠르게 미션에 정해진 동일한 출력값을 도출해내고 제출을 하는 것을 목표로 하다보니
가능한 한 눈에 보이는 결과를 빠르게 만들어내는 방식으로 코드를 작성했다.
하지만 정답 코드를 비교해보면서 깨달았다.
"훨씬 더 효율적이고, 가독성 좋게 코드를 작성할 수 있었구나."
아직 각 자료 구조가 어떤 특징을 가지는지,
메소드의 결과가 어떻게 반환되는지 개념 이해가 불완전하구나.
그리고 그 차이는
단순한 취향의 문제가 아니라
유지보수, 가독성, 확장성이라는 아주 현실적인 문제로 이어진다는 것도 함께 느꼈다.
* 모든 과제의 출처는 오즈코딩스쿨에 있음.

[캡쳐 1-1. 미션 세부 내용]

[캡쳐 1-2. 목표 출력 형태]
위의 두 이미지는 이번 과제에서 내가 수행해야 할 미션의 내용과 결과물의 형태들을 담고있다.

[캡쳐 2-1. 첫 번째 환자 정보 불러와서 출력하기]
리스트 안에 여러 딕셔너리들이 요소로 들어가있는 형태에서 .get( )을 이용해서 정보를 추출하는
좀 더 효율적인 방식을 떠올리지 못하여 불필요하게 변수명이 늘어나는 결과를 초래했다.
리스트에서 원하는 딕셔너리만 추출한 다음 .get( )을 이용해서 정보를 추출하면 더 간단하다.
또한, .get("key값", "정보없음")의 형태를 활용하면 에러 없이 안전하게 결과를 띄울 수 있다.

[캡쳐 2-2. 두 번째 환자 질병 수정 및 출력]
이 역시 1번과 동일하게 2번 환자의 정보를 추출해두고,
.update( )를 활용하여 값을 수정할 수 있다.
하지만, 여기서 한가지 의문이 들어 아래 코드들을 시험해보았다.
"이 방식으로는 한 줄에 변경 과정을 담지 못하는거 아닌가?"

[캡쳐 2-2-1. 한 줄에 변경 이력이 뜨게 출력하기_정답코드 이용]

[캡쳐 2-2-1. 한 줄에 변경 이력이 뜨게 출력하기_오리지널 값 정의]

[캡쳐 2-2-1. 한 줄에 변경 이력이 뜨게 출력하기_연속]

[캡쳐 2-3. 새 환자 등록 및 데이터베이스에서 조회하여 출력]
역시나 1번 미션에서와 동일한 실수를 하고 있다.

[캡쳐 2-4. 마지막 환자 정보 삭제 및 삭제된 환자 정보 출력]
.pop()역시 마지막 요소를 제거한다는 의미이기 때문에
괄호 안에 굳이 인덱스번호 -1을 넣어주지 않아도 된다.
이후는 1번 미션에서와 동일한 이유로 불필요한 코드들을 작성한 것을 볼 수 있다.

[캡쳐 2-5. 나이 통계 계산 및 최종 현황 출력]
.get()을 안써도 된다.'='*50을 쓰면 굳이 여러번 입력 안해도 된다.
[캡쳐 2-6. 최종 출력값 비교]
최종 출력값은 목표한 형태와 동일하게 나타나는 것을 확인할 수 있었다.
하지만, 나의 이론 지식 이해도를 되돌아보고
아직 좀 더 많이 연습하고 몸에 익혀야한다는 것을 깨닫게된 과제였다.