U E D R , A S I H C RSS

KotlinInAction/밑줄긋기 (rev. 1.7)

Kotlin In Action/밑줄긋기



1. 코틀린 소개

  • p35
    • 코틀린은 간결하고 실용적이며, 자바 코드와의 상호운용성을 중시한다.
  • p37
    • 코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
  • p38 ~ p39
    • 코틀린은 정적 타입 지정 언어다. 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메서드를 사용할 떄마다 컴파일러가 타입을 검증해준다는 뜻이다.
    • 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있다.(타입 추론 기능)
  • p41
    • 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다. 따라서 복잡한 동기화를 사용하지 않아도 된다. (!!)
  • p46
    • 흔한 안드로이드 개발 작업을 훨씬 더 적은 코드로 작성할 수 있고, 때로는 전혀 코드를 작성하지 않고 그렇게 할 수도 있다.
      • 개발할 때마다 리스너 덕지덕지 붙어 있는 게 마음에 안 들었는데 코틀린은 좀 다르려나 - 김은솔
    • 코틀린 타입 시스템은 null 값을 정확히 추적하며 널 포인터로 인해 생기는 문제를 줄여준다.
      • 제일 기대하고 있는 기능... - 김은솔
  • p49
    • 게터, 세터, 생성자 파라미터를 필드에 대입하기 위한 로직 등 자바에 존재하는 여러 가지 번거로운 준비 코드를 코틀린은 묵시적으로 제공한다.
      • 인터페이스 제공 vs 코드가 길어지는 번거로운 준비 / 둘 다 각각 지향하는 방향이 다른 것 같다. - 김은솔
  • p51
    • 어떤 객체의 타입을 검사했고 그 객체가 그 타입에 속한다면 해당 타입의 메서드나 필드 등의 멤버를 별도의 캐스트 없이 사용할 수 있다.
  • p53
    • 자바와 마찬가지로 코틀린도 컴파일 언어다.

2. 코틀린 기초

  • p60
    • 함수를 선언할 때 fun 키워드를 사용한다. 실제로도 코틀린 프로그래밍은 수많은 fun을 만드는 재미있는 (...) 일이다!
  • p61
    • 함수를 최상위 수준에 정의할 수 있다. 꼭 클래스 안에 함수를 넣어야 할 필요가 없다.
    • System.out.println 대신에 println이라고 쓴다.
      • 이 부분 마음에 든다. 자바에서의 표준 입출력 함수는 최소지식원칙을 어기게 한다. 그러나 이렇게 변경된 println은 어느 객체에서 호출된 함수인지 노출되지 않기 때문에 그러한 문제를 마주치지 않게 해준다. 코틀린.. 벌써부터 재미있는데..? ㅋㅋㅋ - 정우현
  • p62
    • 자바에서는 모든 제어 구조가 문인 반면 코틀린에서는 루프를 제외한 대부분의 제어구조가 식이다.
  • p65
    • 초기화 식을 사용하지 않고 변수를 선언하려면 변수 타입을 반드시 명시해야 한다.
  • p66
    • 변경 불가능한 참조와 변경 불가능한 객체를 부수 효과가 없는 함수와 조합해 사용하면 코드가 함수형 코드에 가까워진다.
      • 아직은 이해가 잘 안 된다 - 김은솔
    • val 참조 자체는 불변일지라도 그 참조가 가리키는 객체의 내부 값은 변경될 수 있다.
    • var 키워드를 사용하면 변수의 값을 변경할 수 있지만 변수의 타입은 고정돼 바뀌지 않는다.
      • 정적 타입이었다는 걸 깜빡했다. - 김은솔
  • p67
    • 문자열 템플릿을 사용할때는 리터럴 스트링 안에서 $<변수명>을 사용하면 된다.
      • 낯선 곳에서 익숙한 언어의 느낌이 난다. 이 문법은 PHP의 리터럴 스트링 사용법과 같다. 개인적으로는 변수명을 brace로 감싸준 언어들이 더 보기 좋은 것 같다. ㅋㅋㅋ - 정우현
  • p71
    • 클래스에서 프로퍼티를 선언할 때는 앞에서 살펴본 변수를 선언하는 방법과 마찬가지로 val이나 var를 사용한다. (val이 읽기 전용, var이 변경 가능)
  • p72
    • 이름이 is로 시작하는 프로퍼티의 게터에는 get이 붙지 않고 원래 이름을 그대로 사용하며, 세터에는 is를 set으로 바꾼 이름을 사용한다.
      • 따로 이유가 있지는 않은 것 같다. - 김은솔
      • 관용적인 이유때문에 그런 것 같습니다. uhyeon이라는 객체에서 uhyeon.isMarried()를 호출하는건 자바 개발자들한테 자연스러운 일이지만, uhyeon.getIsMarried()같은 메소드를 호출하는 건 부자연스러운 일인 것 같거든요.
  • p75
    • 코틀린에서는 클래스 임포트와 함수 임포트에 차이가 없으며, 모든 선언을 import 키워드로 가져올 수 있다.
  • p76
    • 코틀린에서는 여러 클래스를 한 파일에 넣을 수 있고, 파일의 이름도 마음대로 정할 수 있다. 코틀린에서는 디스크상의 어느 디렉터리에 소스코드 파일을 위치시키든 관계없다.
    • 하지만 여러 클래스를 한 파일에 넣는 것을 주저해서는 안 된다.
      • 자바 방식이랑 다른 점이 꽤 있는 듯 - 김은솔
  • p79
    • (when은) 자바와 달리 각 분기의 끝에 break를 넣지 않아도 된다.
      • 개인적으로 강력한 기능이라고 생각함 - 김은솔
  • p82
    • when에 아무 인자도 없으려면 각 분기의 조건이 boolean 결과를 계산하는 식이어야 한다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2022-05-16 11:10:46
Processing time 0.0295 sec