일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 애자일기법
- 읽기쉬운코드
- framework
- 코딩테스트
- ES
- Baekjoon
- cleancode
- Java
- 알고리즘
- 개발자
- 데이터베이스
- kotlin
- 개발
- 애자일프로그래밍
- 그리디알고리즘
- API
- 자바
- 프레임워크
- 코드
- Elasticsearch
- 코딩
- spring boot
- JPA
- Spring
- 스프링
- database
- 그리디
- 클린코드
- 엘라스틱서치
- 백준
- Today
- Total
목록kotlin (11)
튼튼발자 개발 성장기🏋️
자바 가변 컬렉션을 코틀린 컬렉션으로 리팩토링하는 이유프로그래밍 언어는 진화를 거듭하면서 성능보다 안정성, 생산성을 우선하는 방향으로 변화해 왔다. 특히 자바에서 코틀린으로의 전환은 개발자들에게 익숙한 문법 위에서 더 안전하고 직관적인 코드 작성을 가능하게 해준다. 그 중심에는 바로 코틀린 컬렉션이 있다.Kotlin Collections은 Java Collections interface에서 상태를 바꾸는 메서드를 제거하고 kotlin.collections package 안에서 많은 Mutable Collections interface로 공개되어있다. 여기에 가변 컬렉션 인터페이스로도 확장하기도했다.편리하지만 문제 투성이 자바 가변 컬렉션자바의 컬렉션 프레임워크는 초기까지만 해도 혁신적이었다. Mutabl..
Kotlin은 불변 객체를 선호하고 데이터를 표현하는 객체를 다른 유형의 객체보다 더 선호한다.- 맵의 키나 집합 원소로 불변 객체를 넣을 수 있다.- 불변 객체의 불변 컬렉션에 대해 이터레이션하는 경우 원소가 달라질지 염려할 필요가 없다.- 초기 상태를 깊은 복사하지 않고도 다양한 시나리오를 시도할 수 있다.- 여러 스레드에서 불변 객체를 안전하게 공유할 수 있다.이러한 이유로 코틀린에서는 [값]이라고 하는 것을 사용할 수 있다.아래 예제를 통해 쉽게 알아보자. public class UserPreferences { private String greeting; private Locale locale; private Currency currency; public UserPrefere..

일반적으로 Swagger는 실질적인 로직에 침투적으로써 코드가 지저분해지며 문서의 신뢰성이 저하되는 등 단점이 너무나도 많다. 하지만 Spring Restdocs는 테스트 코드로부터 문서화 하기 때문에 swagger의 단점을 보완하며 정적 문서 형태로 풍부하게 작성할 수 있는 등 swagger보다 더 널리 사용된다.kopring에서 Spring restdocs의 장점만을 이끌어내면서 swagger까지 함께 사용할 수 있는 방법을 알아본다.Hint: Spring restdocs와 swagger는 모두 Springdoc OpenAPI를 통해 사용된다. 1. build.gradle.kts 작성가장 먼저 OpenAPI를 사용하기 위한 기틀을 마련해보자. 플러그인과 종속성 및 Task 설정부터 시작한다.impor..
자바에서 코틀린으로 포팅하면서 고려해야할 리팰토링 중 [Optional]부문에 대해서 설명한다.백문이 불여일견이라고 직접 실습을 통해 차근차근 설명하겠다. public class Legs { public static Optional findLongestLegOver( List legs, Duration duration ) { Leg result = null; for (Leg leg : legs) { if (isLongerThan(leg, duration)) if (result == null || isLongerThan(leg, result.getPlannedDura..
자바에서 코틀린으로 포팅하면서 고려해야할 리팰토링 중 [클래스]부문에 대해서 설명한다.백문이 불여일견이라고 직접 실습을 통해 차근차근 설명하겠다. 아래 Java class [EmailAddress] 클래스를 Kotlin class로 포팅해보자.public class EmailAddress { private final String localPart; private final String domain; public static EmailAddress parse(String value) { var atIndex = value.lastIndexOf('@'); if (atIndex 코틀린 클래스는 주 생성자 안에서 프로퍼티를 선언하기 때문에 자바보다 간결하다. 파라미..
리스트 연산에서 데이터 공유하기불변성(Immutable)은 함수형 프로그래밍의 중요한 개념 중 하나다. 불변 데이터 구조를 사용할 때, 데이터를 수정하는 대신 새로운 데이터 구조를 반환하여 이전 데이터 구조를 변경하지 않는다. 그러나 불변성을 유지하는 것이 항상 성능을 저하시킬 수 있다는 걱정이 있다. 특히 리스트와 같은 데이터 구조에서는 원소를 추가하거나 수정할 때마다 데이터의 복사본을 만들어야 하기 때문에 성능에 영향을 미칠 수 있다.하지만 데이터 공유라는 기법을 활용하면 성능 저하를 최소화하면서 불변성도 유지할 수 있다. 데이터 공유는 이전 데이터 구조의 일부를 그대로 사용하고, 변경된 부분만 새로운 객체로 생성하는 방식이다. 이를 통해 리스트의 연산에서 메모리와 성능을 최적화할 수 있다.불변 리스..
1. 재귀 (Recursion)란 무엇인가?재귀는 어떤 문제를 해결할 때, 그 문제를 더 작은 동일한 문제로 나누어 해결하는 방식이다. 이때, 자신을 호출하는 방식으로 문제를 풀어나가며, 조건을 만족하면 더 이상 재귀를 하지 않고 결과를 반환한다.재귀 함수는 보통 두 가지 주요 요소를 포함한다.기저 조건(Base Case): 재귀를 멈추는 조건으로, 일반적으로 가장 작은 문제를 해결하는 형태다.재귀 호출(Recursive Case): 더 작은 문제를 해결하기 위해 자기 자신을 다시 호출하는 부분이다.아래 팩토리얼을 구하는 재귀 함수 예시를 보자. 팩토리얼은 n! = n * (n-1) * (n-2) * ... * 1로 정의되며, 이를 재귀적으로 계산할 수 있다. fun factorial(n: Int): I..
코틀린(Kotlin)은 함수형 프로그래밍(FP)을 지원한다. 코틀린에서는 함수가 중요한 구성 요소로, 이를 통해 간결하고 표현력 있는 코드를 작성할 수 있다. 일단 함수형 프로그래밍의 기본 개념인 부분 함수(partial function), 전 함수(pre-function), 커리한 함수(currying) 에 대해 설명하고, 이를 어떻게 활용할 수 있는지 알아보자. 1. 부분 함수(Partial Function)부분 함수는 입력값에 대해 정의된 범위 내에서만 동작하는 함수다. 즉, 어떤 함수가 모든 가능한 입력에 대해 정의된 것이 아니라, 일부 입력에 대해서만 유효한 함수일 때 사용된다. 이 개념은 주로 예외 처리나 특정 조건에 맞는 함수를 정의할 때 유용하다.예를 들어, 코틀린에서 map 함수는 nul..