일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring-cloud-aws
- 현대건설기계
- 투자에 대한 생각
- Effective Java
- JW생명과학
- 건설기계
- 포트폴리오
- 유진기업
- 하워드 막스
- react
- 트러블슈팅
- MySQL
- Java
- Kotlin
- 철강
- Real MySQL
- 산업리포트
- 삼일씨엔에스
- 자바
- 2020포트폴리오
- Vue.js
- 코틀린 기본
- 기업분석
- AWS
- AWS SQS 들이파기
- 산업분석
- 디스플레이
- SQS
- 건기식
- Spring Boot
- Today
- 2
- Total
- 325,465
목록개발 공부 기록하기/01. JAVA & Kotlin (33)
공부하는 개발자

https://mockk.io/ MockK Provides DSL to mock behavior. Built from zero to fit Kotlin language. Supports named parameters, object mocks, coroutines and extension function mocking mockk.io mock 객체 생성하기 val domainRepository = mockk() Argument Matching 사용하기 특정 객체에 expected answer를 부여할때 파라미터를 지정해주어야 한다. matcher는 다음과 같은 느낌으로 동작한다 // 들어오는 파라미터가 1L 일때만 cycle을 반환 every { domainRepository.findById(1L) } r..

잘 몰랐거나, 인상깊은 부분 위주로만 정리 1장 안정성 안정성 : 크래시가 적으면 사용자와 개발자 모두에게 좋고, 상당한 비즈니스 가치를 제공한다. Item 1. 가변성을 제한하라 시간의 변화에 따라서 변하는 요소를 표현할 수 있다는 것은 유용하지만, 상태를 적절하게 관리하는 것이 생각보다 꽤 어렵다. 프로그램을 이해하고 디버그하기 힘들어진다. 시점에 따라 값이 달라질 수 있기 때문에 코드의 실행을 추론하기 어려워진다. 멀티스레드 프로그램일 때는 적절한 동기화가 필요하다. 테스트하기 어렵다. 상태 변경이 일어날 때 이러한 변경을 다른 부분에 알려야 하는 경우가 있다. 가변성은 시스템의 상태를 나타내기 위한 주요한 방법이다. 하지만, 변경이 일어나야 하는 부분을 신중하고 확실하게 결정하고 사용해야 한다. ..

Extension 모든 extension을 위한 마커 인터페이스이다. Extension은 @ExtendWith 를 통해 선언적으로 등록될 수도 있고, @RegisterExtension 을 사용해 프로그램에 따라 적용될 수도 있가. ServiceLoader 매커니즘을 이용해 자동 등록될 수도 있다. ServiceLoader 또는 @ExtendWith 를 이용해 등록되는 Extension 구현체는 default constructor를 무조건 가지고 있어야 한다. @ExtendWith 를 이용해 등록될 때 default constructor는 반드시 public이 아니어도 된다. ServiceLoader를 통해 등록될 때 default constructor는 반드시 public 이어야 한다. @Register..

코틀린의 공식 문서, Basic Types(https://kotlinlang.org/docs/reference/basic-types.html)를 간단히 정리하며 한 번더 생각해볼만한 것을 정리한 기록입니다. 코틀린 primitive type과 NULL 코틀린에서 중요하게 생각하는 철학 중 하나는 NULL이 될 수도 있는 타입과 NULL이 절대 들어가지 않을 타입을 명확히 구분하겠다는 것이다. 또한, 내부적으로 primitive type이 존재하고, 실제 연산을 할 때도 primitive type으로 처리하지만 타입은 모두 객체 타입으로 간주된다. 이게 무슨 말인가 하면 int number = 3; 이라는 자바 코드가 존재한다고 해보자. 이때 int는 Integer 라는 객체와 명확히 구분되며, primi..

오늘은 companion object에 대해 알아볼 예정이다. 역시나 Java 로 코드를 살펴보고 Kotlin으로 바꿔보도록 하자 Java에서의 상수 public class Person { public static final int MAX_AGE = 500; } public static void main() { System.out.println(Person.MAX_AGE); } 간단한 코드이다. Person 클래스 내부에 MAX_AGE 라는 상수가 public 접근 제한자로 존재하고, 이는 외부에서 Person.MAX_AGE로 접근할 수 있다. 만약 Person 클래스 내부에서만 접근하게 하고 싶다면 public을 private으로 바꿀 수 있다. 클래스와 인스턴스 관점에서 바라보자면, static 필드..

when 사실 when expression을 처음 보았을때 들었던 생각은 switch case문과 무척 유사하다는 점이었다. Java에서는 else 사용을 지양해야 한다는 일반적인 clean code 원칙에 따라 switch case 사용도 지양하고 있었는데, Kotlin의 when은 Java의 switch case보다 훨씬 단순하고 강력했다. 비교를 해보자. Kotlin 숫자가 들어오면 숫자를 3으로 나눈 나머지에 따라 적절한 로직을 수행하고 원하지 않는 형태 이면 exception을 뱉어야 한다고 하자. 이를 Early Return 스타일로 표현하면 다음과 같다. (println에 로직이 들어간다고 생각할 수 있다) private fun validateNumber(num: Int) { if (num ..