220121 - TIL 겸 회고 겸 ...

Suntory·2022년 1월 21일
0

오늘 한 일

  • 크롱의 강의를 들었다.
    나도 정신없고 뭔가 분위기도 산만해서 그냥 편하게 들었다. 그래도 항상 강조하시는 설계의 중요성을 깨달았다.
    Code & Fix가 아닌 Design & Code ( & Fix ㅎㅎ) 를 해보자!
  • 다른 분들의 제출 코드를 살펴봤다.
    역시 코드스쿼드엔 잘하는 사람이 많다. 비교하긴 싫지만 비교가 된다..ㅎㅎ 그래도 함수형 인터페이스와 람다, 스트림을 익힌 걸로 이번 미션은 만족하고 넘어가고 싶다.!

TIL

제네릭

이번에 코드를 작성하면서 List, Set 뒤에 제네릭 타입이 명시되지 않은 코드를 보았다. 익숙하지 않은 형태였지만 우선 작성했는데, 컴파일 오류 없이 잘 작동되었다. 그런데 SonarLint에서는 바람직하지 못하니 타입을 명기하라고 하였다. 그 이유는 무엇일지 궁금하였는데 마침 그룹원 중 Tany가 질문해서 찾아보게 되었다.

제네릭에 대한 간단한 정리

위 링크를 찾아보니, 타입을 명기하지 않는 경우 다음과 같은 경우가 발생할 수 있다.

public class UseClass {
    public void exceptionExample() {
        List test = new ArrayList<>();
        test.add("a");
        test.add("b");
        test.add("c");

        int a = (Integer) test.get(0) / 1;
    }
}

위 코드를 보면 List의 타입이 명기되지 않은 raw type을 사용하고 있어서 List에 담겨있는 string을 Integer로 형변환하여 1로 나누려고 하니 실행하면 에러가 뜬다. 하지만 문제는 실행하기 전까지는 이를 눈치챌 방법이 없다는 것이다.

public void example() {
        List<String> test = new ArrayList<>();
        test.add("a");
        test.add("b");
        test.add("c");

        int a = (Integer) test.get(0) / 1;
    }

이를 이런식으로 List에 담길 타입을 명시적으로 표현해주면, 컴파일러가 이를 감지하고 Integer로 형변환 하는 부분에 빨간 줄이 생기면서 컴파일 에러를 띄워주게 된다.

추가적으로, 이펙티브 자바에도 제네릭에 대한 섹션이 있고, 맨 첫 챕터가 raw type을 사용하지 말라고 되어있다. 시간을 내서 제네릭 문법, 그리고 이펙티브 자바를 통해 어떻게 활용하면 좋을지 학습해야겠다.

좋았던 점

  • 다른 분들 코드를 참고해보는 것이 좋았다. 시간이 나고 생각이 막힐 때마다 적극적으로 참고해야겠다.
  • 주말동안 책을 읽어야겠다는 굳은 의지를 가졌다. 실천만 하면 된다.

개선할 점

  • 컨디션관리와 집중력 관리!! 공부가 안될때는 차라리 밖에 나가서 산책을 하자~
  • 심리적으로 위축되지 말기 여러모로 힘든 시기에 심리적으로까지 위축되면 뭔가 망칠 것 같다. 항상 더 적극적이고 밝게 살려고 노력해보자.
profile
천천히, 하지만 꾸준히 그리고 열심히

0개의 댓글