현실을 넘어
close
프로필 배경
프로필 로고

현실을 넘어

  • 분류 전체보기
    • 자바
      • 일반
      • 알고리즘
      • 객사오
      • 스프링입문객체지향
      • 리팩토링
      • 스프링부트3
      • JPA
      • QueryDsl
      • Spring Security
    • 코틀린
      • 코틀린인액션
      • 알고리즘
    • 일 관련 삽질
    • JIRA
    • 도메인주도개발
    • DB
      • Mysql
    • MQ
      • Apache Kafka
    • Docker-Kubernetes
    • GITHUB
    • REST API
    • 리눅스
  • 홈
  • 태그
  • 방명록

[코틀린인액션] 로컬 함수를 사용하여 코드 중복 제거

fun saveUser(user: User) { if (user.name.isEmpty()) { throw IllegalArgumentException("Can't save user ${user.id}: empty Name") } if (user.address.isEmpty()) { throw IllegalArgumentException("Can't save user ${user.id}: empty Address") } // Save user to the database } fun main() { val user = User(1, "John", 25, "Main St.") saveUser(user) }에서 이름과 주소의 유효성 검사가 중복된다.해당 부분을 로컬 함수로 개선해보자fun saveUser(us..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2023. 12. 9.
  • textsms

[코틀린인액션] 인터페이스 정의 및 구현

인터페이스 정의 및 구현 인터페이스 정의 interface Clickable { fun click() } click은 추상 메서드임. 인터페이스 구현 interface Clickable { fun click() } class Button : Clickable { override fun click() = println("I was clicked") } fun main() { Button().click() } I was clicked extends 와 implements 대신 콜론 (: ) 을 사용하여 클래스의 확장과 인터페이스의 구현을 처리한다. override 키워드는 상위 클래스나 인터페이스의 메서드를 오버라이딩할때 필수적으로 사용됨. 디폴트 구현과 다중 인터페이스 구현 디폴트 구현을 인터페이스에 제공..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2023. 12. 9.
  • textsms

[코틀린인액션] 확장 프로퍼티 사용

확장 프로퍼티 정의읽기 전용 확장 프로퍼티val 키워 사용 게터 구현이 필요함변경 가능한 확장 프로퍼티var 키워드를 사용하여 정의하고, 게터와 세터를 모두 구현해야함사용읽기 전용 확장 프로퍼티fun String.lastChar(): Char = this.get(this.length - 1) fun main() { val lastChar = "Kotlin".lastChar println("lastChar = $lastChar"); } //lastChar = n변경 가능한 확장 프로퍼티var StringBuilder.lastChar: Char get() = get(length - 1) set(value: Char) { this.setCharAt(length - 1, value) } fun main() { ..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2023. 11. 29.
  • textsms

[코틀린인액션] 가변 인자 함수 , 중위 호출 , MapOf

가변 인자 함수의 정의함수의 매개변수 타입 앞에 vararg 키워드 사용사용fun args(args: Array) { val argumentsList = listOf("args: ", *args) println(argumentsList) } fun main() { args(arrayOf("1", "2", "3")) } //[args: , 1, 2, 3]*args 는 배열의 각 원소를 개별 인자로 함수에 전달함중위 호출(Infix Call)to 함수는 중위 호출 방식ㅇㅁ함수 호출 시 수신 객체와 유일한 메서드 인자 사이에 메서드 이름을 넣어 호출하는 방식1 to "one" == 1.to("one") 와 동일함to 함수to 함수는 Pair 의 인스턴스를 반환함val (number, name) = 1 to "..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2023. 11. 29.
  • textsms

[코틀린인액션] 문자열 등

코틀린에서의 문자열자바의 문자열과 동일하다자바의 문자열에 API 추가적인 확장 함수 제공그냥 좀더 편하게 쓸 수 있다곤하는데 체감은 안됨문자열 나누기String.split 은 실제 정규식을 씀.split(”.”) 은 마침표 . 를 정규식의 모든 모든 문자를 나타내는 와일드 카드로 해석함fun main() { val split = "12.345-6".split(".", "-") println("split = ${split}"); } split = [12, 345, 6]정규식의 사용toRegex 확장 함수를 통해 문자열을 정규식으로 변환한다.fun main() { val toRegex = "[.\\-]".toRegex() val split = "12.345-6.A".split(toRegex) println(..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2023. 11. 29.
  • textsms

[코틀린인액션] 코틀린에서의 예외?

코틀린에서의 예외 처리 특징체크 예외 와 언체크 예외 구분이 없다고 함모든 예외가 언체크 예외로 처리됨..예외를 명시적으로 선언하거나 잡을 필요가 없다고 한다.예외 처리의 방식try 블록에서 예외가 발생할 수 있는 코드를 작성하고, catch 블록에서 예외를 잡아서 처리한다.finally 블록에서 정리 코드 수행요 부분은 자바랑 동일하다.그런데 왜 코틀린에서 언체크 예외의 구분이 없을 수 있는 것일까?결론은 단순했다.개발자가 더 명확하고 간결한 코드를 작성하도록 돕는 것이 철학이다일단 체크 예외의 문제점이 존재한다.1 .만약 함수가 새로운 예외를 던지는 경우해당 함수를 호출하는 모든 메서드가 예외를 처리해야하는 막대한 짐을 등에 얹게 된다.과도한 예외 처리 케이스개발자들이 예외를 try-catch 로 적..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2023. 11. 29.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • navigate_next
공지사항
  • ㅇ
전체 카테고리
  • 분류 전체보기
    • 자바
      • 일반
      • 알고리즘
      • 객사오
      • 스프링입문객체지향
      • 리팩토링
      • 스프링부트3
      • JPA
      • QueryDsl
      • Spring Security
    • 코틀린
      • 코틀린인액션
      • 알고리즘
    • 일 관련 삽질
    • JIRA
    • 도메인주도개발
    • DB
      • Mysql
    • MQ
      • Apache Kafka
    • Docker-Kubernetes
    • GITHUB
    • REST API
    • 리눅스
최근 글
인기 글
최근 댓글
태그
  • #JPA
  • #객사오
  • #객체지향
  • #도메인주도개발
  • #Kotlin
  • #QueryDSL
  • #자바
  • #알고리즘
  • #리팩토링
  • #ddd
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바