본문 바로가기

Reading Record/이펙티브 코틀린

[이펙티브 코틀린] Item20. 일반적인 알고리즘을 반복해서 구현하지 말라

이미 구현되어있는 알고리즘을 활용했을 때의 장점

  • 단순하게 코드가 짧아진다.
  • 코드 작성 속도가 빨라진다.
    • 알고리즘을 만드는 것보다 함수 호출을 한 번 하는 것이 훨씬 빠르다
  • 구현을 따로 읽지 않아도, 함수의 이름 등만 보고도 무엇을 하는지 확실하게 알 수 있다.
    • 그만큼 함수의 이름도 잘 작성해야한다.
  • 직접 구현할 때 발생할 수 있는 실수를 줄일 수 있다.
  • 이미 구현되어있는 함수를 제작자들이 한 번만 최적화하면, 해당 함수를 사용하는 모든 곳이 최적화의 혜택을 받을 수 있다.

표준 라이브러리인 stdlib를 활용하자.

  • stdlib는 확장 ㅎ마수를 활용해서 만들어진 거대한 유틸리티 라이브러리

동일한 결과를 얻는 함수를 여러 번 만드는 것은 잘못된 일

  • 모든 함수는 테스트되어야하고, 기억되어야 하며, 유지보수되어야 한다.
  • 따라서 함수를 만들 때는 이러한 비용이 들어갈 수 있다는 것을 반드시 전제해야한다.

많이 사용되는 알고리즘을 추출하는 방법으로는 톱레벨 함수, 프로퍼티 위임, 클래스 등이 있으며 확장 함수는 이러한 방법들과 비교해서 여러 장점을 가지고 있다.

  • 함수는 상태를 유지하지 않으므로, 행위를 나타내기 좋다.
  • 톱레벨 함수와 비교해서, 확장 함수는 구체적인 타입이 있는 객체에만 사용을 제한할 수 있다.
  • 수정할 객체를 아규먼트로 전달받아 사용하는 것보다 확장 리시버로 사용하는 것이 가독성 측면에서 좋다
  • 확장 함수는 객체에 정의한 함수보다 객체를 사용할 때, 자동 완성 기능 등으로 제안이 이루어지므로 쉽게 찾을 수 있다.