Icednut's Space

Blog

8

7

14

15

4

Recent Posts

  1. Apr 04, 2022

    Effective Kotlin Item 13 - Unit?을 리턴하지 말라

    Unit? 위 코드는 getData 함수 호출 시 기대한대로 Person 데이터를 가져올 경우 showPerson을 호출하고 그렇지 않으면 showError를 호출하도록 작성했을텐데 아래와 같이 기대하지 않은 상황이 연출될 수도 있다. 정리

  2. Apr 03, 2022

    Effective Kotlin Item 11 - 가독성을 목표로 설계하라

    짧은 코드가 읽기 좋은 코드일까? 위 두 코드에서 어떤 코드가 더 읽기 좋은 코드일까? if/else를 줄이는 방향으로 코딩하기 위해 두 번째 코드로 작성한다고 했을 때 과연 가독성이 더 좋아졌다고 말할 수 있을까? 먼저 두 번째 코드로 작성한 코드를 코틀린 뉴비에게 보여준다면 takeIf, let 과 같은 메소드는 익숙하지 않기 때문에 이해를 못할 가능성이 크다. 따라서 오히려 if/else 같은 전통적인 코드가 오히려 이해하기 빠르기 때문에 코드는 복잡해질지라도 이해하기가 더 쉬울 수 있다. 또한 첫 번째 코드와 두 번째 코드는 동작 방식이 다르다. let에 넘긴 람다(view::showPerson)의 결과로 null을 반환할 경우 view.ShowError()를 호출하게 된다. 이는 첫 번째 코드와 엄연히 다른 동작이다. 그럼 let은 언제 쓸까?

  3. Mar 22, 2022

    Effective Kotlin Item 9 - use를 사용하여 리소스를 닫아라

    Java 에서는 Closeable/AutoCloseable 인터페이스를 구현한 리소스 클래스들을 try with resource 라는 기법으로 close 메소드 호출 없이 리소스를 해제하는 작업을 수행할 수 있다. 그럼 코틀린에서는 어떻게 할까? 코틀린에는 try with resource 같은 문법이 없다. 대신 use 라는 메소드를 사용하여 리소스 해제를 수행한다. 혹은 useLines 라는 확장 함수를 사용하면 파일의 내용을 한 줄씩 읽어서 메모리에 유지한 뒤 그 한 줄을 처리 완료하면 파일 리소스 자원 해제 작업을 수행하기 때문에 대용량 파일 처리에 용이하다.

  4. Mar 21, 2022

    Effective Kotlin Item 8 - 적절하게 null을 처리하라

    코틀린에서 null을 처리하는 3가지 방법 코틀린을 사용하다보면 종종 null을 반환하는 함수를 보게 된다. 이는 아래와 같이 적절한 결과를 반환할 수 없을 때 null을 반환하는 함수들을 말한다. 여기서 null 이란 뭘까? null은 ‘값이 부족하다(lack of value)’를 의미한다. 코틀린에서는 null을 안전하게 처리하지 않으면 NPE가 발생할 수도 있다. 그럼 null을 처리하는 방법 3가지를 살펴보자. 스마트 캐스팅 코틀린에서 스마트 캐스팅이란게 뭘까? 일반적으로 코틀린에서 nullable type의 값에 대한 메소드를 호출은 할 수 없기 때문에 null check를 하면 일반적인 메소드 호출을 할 수 있게 된다. 이걸 스마트 캐스팅이라고 말한다.

  5. Mar 21, 2022

    Effective Kotlin Item 7 - 결과 부족이 발생할 경우 null과 Failure를 사용하라

    Throw Exception 괜찮은걸까? 아래 같이 결제 처리를 하는 메소드가 있다고 가정하자. 이 메소드를 호출하면 해당 사용자에게 금액이 차감되는 작업을 진행하는 서버에 네트워크를 이용하여 요청하는 작업을 한다고 하자. (HTTP API 호출인지 RPC Call 인지는 아직 모름) 저 코드만 놓고 봤을 때 우리가 약속했던 기대 결과는 결제가 진행이 된다는 것이다. 그런데 결제가 실패했다는 기대 결과는 어떻게 알 수 있을까? 이럴 때 보통 선택하는 방법이 예외를 던지는 방법(throws exception)이다. 하지만 예외를 던진다고 그 예외(실패 기대 결과)를 과연 제대로 처리할지 의문이다. Unchecked Exception 이라면 저 메소드를 사용하는 개발자는 try-catch로 잡는 것을 모르고 패스할수도 있을테고 비동기 환경에서 저 메소드를 호출하게 된다면 예외 추적이 제대로 되지 않을수도 있다. 이런 이유로 실패했다는 기대결과를 예외에 기대는 것은 무책임하거나 위험한 발상이라고 본다. 책에서는 Effective Java를 차용하면서 예외는 예외적인 상황이 발생했을 때 사용하는 것이 좋다고 언급하고 있다.

All Posts (19)

  1. Mar 14, 2022

    Effective Koltin Item 5 - 예외를 활용해 코드에 제한을 걸어라

  2. Mar 14, 2022

    Effective Kotlin Item 4 - inferred 타입으로 리턴하지 말라

  3. Feb 17, 2022

    스프링의 PSA 개념을 이해했는지 확인하기 + 스칼라, FP 버전으로 바꿔보기

  4. Oct 30, 2021

    liftIO 2021 컨퍼런스 후기를 가장한 자아 성찰

    Velog
  5. Oct 21, 2021

    타입클래스를 이용한 애드혹 다형성 구현하기 (Ad-hoc Polymorphism in Scala)

    Velog
  6. Jun 03, 2021

    Programming in Scala Day 07

  7. May 21, 2021

    Programming in Scala Day 06

  8. May 04, 2021

    Programming in Scala Day 05

  9. Apr 28, 2021

    Programming in Scala Day 04

  10. Apr 20, 2021

    Programming in Scala Day 03

  11. Apr 15, 2021

    Programming in Scala Day 02

  12. Apr 08, 2021

    Programming in Scala Day 01

  13. Mar 23, 2021

    Scala에서 String을 검사할 땐 패턴 매칭을 활용하자!

  14. Mar 02, 2021

    Scala, Akka 환경에서 HTTP 요청 보내기

  15. Jan 01, 2021

    (Restart) Akka Study Day 2 - Akka Typed를 활용한 액터 프로그래밍 살펴보기

  16. Dec 29, 2020

    (Restart) Akka Study Day 1 - 전통적인 Backend 개발과 Akka를 이용한 Backend 개발의 차이점

  17. Dec 03, 2020

    [알고리즘 연습] 섬(island) 개수 구하기 with DFS

  18. Nov 11, 2020

    [알고리즘 연습] 주어진 배열의 숫자들을 조합하여 가장 큰 수 만들기

  19. Nov 10, 2020

    [Akka] Actor에서 redis-client로 get을 하면 왜 오류(Protocol Exception)가 날까?