내일배움캠프 15일차
오늘은 메모장 만들기 개인과제를 했다.
문제1
입력한 숫자(documentNum)에 해당하는 인덱스가 리스트에 존재하는지 판별하는 코드에서 에러가 났다. 아래는 에러가 난 코드이다.
if(memoList.get(documentNum) == null){
System.out.println("존재하지 않는 글");
}else {
}
구글링을 해본 후 memoList의 size()를 입력한 숫자와 비교해 입력한 숫자가 size()보다 작은지 여부로 판별하는 것이 좋겠다고 생각을 해서 아래와 같이 수정했다.
if(documentNum >= memoList.size()){
System.out.println("존재하지 않는 글");
}else {
}
문제2
글 하나를 삭제하면 그 뒤의 글들이 번호가 1씩 당겨지게 했는데 실행해 보니 바로 다음 글만 -1이 되었고 그 다음 글들은 번호에 변화가 없었다. 아래는 오류가 난 코드이다.
memoList.remove(documentNum);
for (int i = documentNum; i < memoList.size(); i++) {
memoList.get(documentNum).setMemoVONum(documentNum - 1);
}
for문 안에서 documentNum이 들어가야 할 부분을 i로 썼어야 했는데 그러지 않았다는 것을 깨달았다. 또한 리스트의 인덱스와 리스트 내에서 사용하는 번호를 혼동하고 있었다. 아래는 수정한 코드이다.
memoList.remove(documentNum);
for (int i = documentNum; i < memoList.size()+1; i++) {
memoList.get(i+1).setMemoVONum(i);
}
하지만 이번에는 IndexOutOfBoundsException 에러가 자꾸 발생했다. for문에서 조건부를 i < memoList.size()-1로 바꾸자 해당 에러는 사라졌다. 인덱스 범위를 넘는 get()을 해서 발생한 오류로 보인다.
삭제한 인덱스부터 적용하던 것을 그냥 처음부터 인덱스를 적용하는 것으로 수정했더니 무리없이 실행이 되었다. 아래는 수정한 코드이다.
for (int i = 0; i < memoList.size(); i++) {
memoList.get(i).setMemoVONum(i + 1);
}
LinkedList는 조회에 시간이 오래 걸리기 때문에 처음부터 인덱스를 수정하는 것이나 삭제된 인덱스부터 찾아 인덱스를 수정하는 것이나 크게 차이가 없을 것 같아 위와 같이 수정하기로 하였다.
저녁에는 학습법 특강을 들었다.
학습법 특강 메모
- TIL, WIL, 알고리즘: 꾸준함, 성실함
- 개인과제, 팀 과제: 사고력, 구현력
- 프로젝트: 기술적 의사결정, 고민
- 개발역량점검표: 실력에 대한 메타인지, 부족한 점 채우기
- 눈 앞에 있는 것에 집중
- 레거시 코드 - 이전 사람들이 작성해 놓은 코드
- 기술적인 요구사항이 어느 정도 충족되면 그 이후는 자질, 성향을 봄 -> 협업, 기술적인 고민
- 기술적인 고민을 잘하려면
- 로직과 코드에 대한 의도를 생각하기
- 구현하는 기술, 스택에 목적과 근거 가지기
- 더 좋은 방법이 있는지 고민하기
- 협업을 잘하기 위해 - 옳은 말을 기분 좋게 하기
- 예쁘게 말하기
- 전달하고자 하는 바를 명확하게 말하기
- 데이터 또는 기술적인 근거를 바탕으로 소통하기
- 원격 강의: 개념과 구조 이해 -> 이해한 부분 직접 구현하기
- 실시간 강의: 완전히 이해하지 못하더라도 집중해서 듣기 -> 녹화본으로 복습
- 과제: 배운 내용 복습 및 구현 연습, 완성하지 못했더라도 피드백을 받고 부족한 부분 채우기
- 질문과 공유
- 집중코딩시간에는 코딩만
- 중요한 건 꺾였는데도 그냥 하는 마음