devlog of ShinJe Kim

[TIL] 2019-09-02

|

Today I Learned

  • 코틀린의 장점 3가지.
    • 상호운용성: ios개발의 경우 옵씨와 swift 상호 운용이 어려움. 이런 것들을 호환하게 해주는게 브릿지라고 함.
    • 안전성: 컴파일러가 타입을 자동으로 추론해주어서 타입 정보를 직접 지정할 필요가 없다. 또한, 실행 시점에 오류를 발생시키는 대신 컴파일 시점 검사를 통해 오류를 방지해준다. 마지막으로 null 값으로 인한 오류(NullPointerException)와 class cast로 인한 오류(ClassCastException)을 방지해준다.
    • 간결성: 적은 양의 코드로 가독성 있게 많은 것을 표현할 수 있다.
  • 코틀린에서 부 생성자를 사용하는 이유
    • 자바와의 상호운용성을 위해
    • ‘정적 팩토리 메소드’는 이를 개선하기 위해 나온 것. 팩토리는 객체를 생성하는 역할을 지칭하는 용어이다(디자인 패턴에서는 또 다른 의미임). 팩토리 메소드를 쓰는 이유는, 일반적인 생성자는 이름이 고정되어 있는데 이는 가독성이 좋지 않다. 따라서 셍성자를 매핑해서 가독성을 높이기 위해 팩토리 메소드와 부 생성자를 사용한다. (이펙티브 자바 1장에 팩토리 메소드 나옴)
    • 생성자는 아래와 같은 한계가 있기 때문에 부생성자를 남발하는 것은 좋지 않다.
      • 이름을 가질 수 없다.
      • 시그니처 제약이 있다(이름을 가질 수 없기 때문에 오러지 파라미터로만 시그니처를 다르게 하여 만들어야 한다)
      • 반드시 새로운 인스턴스가 생성된다.
  • 코틀린 인터페이스와 자바 인터페이스의 차이?
    • 강한 결합과 느슨한 결합
    • 강한 결합이란? 정적 바인딩. 주체적인 타입을 이용하는 것. 장점은 컴파일 최적화가 가능하다. 성능적으로 우수하다(인라인 호출). 하지만 느슨한 결합은 코드를 수정하지 않고 확장하는데에 유리하다. 단점은 동적 바인딩을 하기 때문에 해당하는 객체가 어떤 타입인지에 대해 최적화가 불가능하다.

Comments