오늘의 메인 이벤트는 객체 코플릿 문제들을 페어분과 함께 푸는 것이었다. 처음 문제들은 그냥 수월하게 풀다가 마지막 두 문제에서 멘탈이 터질 정도로 어려워져서 고생이 심했다. 맨 마지막 문제는 1시간 이상의 시간을 썼던 것 같다. 이전까지의 문제들은 객체가 이미 주어진 상황에서 내가 그 객체를 어떻게 다루느냐의 문제였다면, 이 문제는 내가 주어진 객체를 다루는 것과 동시에 내가 어떻게 객체를 생성해서 활용할 것인지에 대한 문제였다. 나는 객체를 따로 생성하지 않고 변수를 여러개 생성해서 문제를 풀기는 풀었다. 하지만 레퍼런스 코드를 보니 확실히 내가 작성한 코드보다 훨씬 간결하고 깔끔했다. 객체를 배웠으나 내가 직접 객체를 만들어 활용할 생각을 하지 못했다는 점이 아쉬웠다. 객체 문제만 풀다가 다 풀고나서는 내 원래 전공과 관련된 생각이 들었다. "객체란 무엇인가. 주체는 객체가 있음으로써 정의되는 것이며 객체에 의해 주체가 행해지는 상황에서는 오히려 객체가 주체의 행위를 유발하는 또 다른 주체가 된다. 그런 의미에서 나는 객체 문제를 푼다고 하는 주체적인 행동을 하는 것 같지만 사실은 객체 문제라는 것이 존재하기 때문에 내가 주체인 것처럼 보이는 객체다." ...맞아요, 개똥 생각입니다. 그냥 한 번 이상한 소리 해봤어요.
[ 오늘의 TODO ]
코드 스테이츠) Pair-Programming// 객체 코플릿패스트 캠퍼스) 인강 3개 이상 듣기 // optional생활) 물 1L 이상 마시기개선) 페어 프로그래밍할 때도 혼자 있을 때처럼 침착하게 오류 대처하기// 오늘은 오류 났어도 침착하게 잘 해낸 것 같다.

[ 오늘의 오류 해결 ]
1. Object.keys(객체이름)
오늘 Object.keys를 활용해서 푼 문제들이 개인적으로 많았다. 나는 이 메소드를 그냥 key값들을 가져오는 것이라고 생각했는데 그 단순한 생각으로 인해서 오류가 몇 번 났다. 그래서 MDN을 뒤적거리면서 정말 올바른 사용 방법을 터득했다.
내가 오류냈던 것은 이거였다. Object.keys(객체이름[index]) 그러니까 객체 내에서 index에 해당하는 key값을 불러오려고 했던 것이다. 내 머리 속에서는 만약 밑에 처럼 객체가 있다고 한다면
const WomenVolleyBallPlayer = {
captain: "김연경",
wingSpiker: "박정아",
center: "양효진",
setter: "안혜진",
opposite: "김희진",
libero: "오지영"
}
// 그렇다 본인은 2020 도쿄 올림픽 여자배구 한일전을 라이브로 본 직후다.
// 이 외에도 많이 애쓰고 계시는 선수 분들이 계시지만... 생략을 송구스럽게 합니다 ㅠㅠㅠ
Object.keys(WomenVolleyBallPlayer[3]) 을 하면 그 키값인 setter가 나올 것이라 생각했던 것이다. 하지만 그것은 큰 오산이었다. 만약에 내가 Object.keys(WomenVolleyBallPlayer)를 했다면 그건 Key값들을 배열로 나열한 것이다.
[captain, wingSpiker, center, setter, opposite, libero]
그렇기 때문에 내가 원하는 key값을 추출해야 한다면 Object.keys(WomenVolleyBallPlayer)[3] 괄호 밖으로 끌고 나가서 [3]을 했었어야 했다. 추가적으로 .keys 이외에 value 값들을 배열로 가져오고 싶다면 .values 를, key와 value 모두 가지고 오고 싶다면 .entries 를 사용하면 된다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
Object.keys() - JavaScript | MDN
The Object.keys() method returns an array of a given object's own enumerable property names, iterated in the same order that a normal loop would.
developer.mozilla.org
[ 오늘의 배움 ]
1. 객체의 요소
1-1) 추가
dot location, bracket location으로 객체 내에 없는 key값을 주고 값을 할당하면 객체에 해당 key와 값을 추가할 수 있다.
1-2) 삭제
delete 메소드를 활용하면 된다.
[ 오늘의 교훈 ]
1. 배운 모든 것을 활용할 생각을 하자.
다시 말하면, 문제를 풀 때 내가 이것을 직접 활용해서 써먹을 생각을 해보자는 것이다. 이전에 for문 코플릿 문제들을 풀 때 내 코드를 더 욱 간결하게 하는 방법으로 변수를 선언하고 할당해주는 것을 알아냈다. 그것과 마찬가지로 이번에는 객체를 통해서 더 코드를 깔끔하게 표현할 수 있다는 것을 알았다. 그런데도 내가 그 코드를 깔끔하게 표현하는 방식을 생각하지 못한 이유는 배운 것을 내가 직접 사용해서 풀 생각을 안 한다는 것이다. 좀더 엄밀이 말하면 메소드만 활용하지 말고 배열, 객체 등을 내가 직접 만들어보자는 것이다. 배열이 주어지면 배열에 내장된 메소드를 활용해서 풀고, 객체가 주어지면 객체에 내장된 메소드를 활용해 푸는 것은 이제 쉽다.
이제 중요한 것은 주어진 배열과 객체가 아닌
내가 직접 배열과 객체를 만들어서 다룰 줄 알아야 한다는 것이다.
오늘의 코플릿은 위와 같은 교훈을 주었다. 물론, 지금 기초 단계에서는 메소드만 잘 활용해도 잘하는 것이지만 내가 원하는 목표는 더 높은 곳이고 코드 스테이츠의 진도를 잘 따라가기 위한 욕구가 있기 때문에 배운 것들을 허투루 흘려보내지 않기 위해 노력해야 한다.
'코드스테이츠 > 코드스테이츠 @ 개발 일지' 카테고리의 다른 글
[ 코드 스테이츠 ] 17일차, 이제 점점 어려워진다. (0) | 2021.08.04 |
---|---|
[ 코드 스테이츠] 16일차, 20주 뒤에 보자 (0) | 2021.08.03 |
[코드 스테이츠] 12일차, "개발은 재밌네요" (0) | 2021.07.30 |
[코드 스테이츠] 11일차, Git - Got it (0) | 2021.07.29 |
[코드 스테이츠] 10일차, CLI 막연한 두려움 (0) | 2021.07.28 |