728x90
반응형

개발 34

(Test) Junit에서 isEqualTo 와 isSameAs

Kotlin에서 JUnit을 사용할 때 isEqualTo와 isSameAs 메서드의 차이점은 Java에서와 동일합니다. isEqualTo 메서드는 두 개의 객체가 내용(content) 면에서 동일한지 확인하는 데 사용됩니다. 객체의 값(value)을 비교하기 위해 equals 메서드를 사용합니다. 예를 들어, obj1과 obj2라는 두 개의 객체가 있다면, assertThat(obj1).isEqualTo(obj2)를 사용하여 obj1이 obj2와 동일하다고 단언할 수 있습니다. isSameAs 메서드는 반면에 두 개의 객체가 메모리 상에서 정확히 동일한 인스턴스를 참조하는지 확인합니다. 객체의 참조(reference)를 비교합니다. 예를 들어, obj1과 obj2라는 두 개의 객체가 있다면, assert..

개발/코틀린 2023.06.17

(Coroutine) Flow flatMapConcat, flatMapLatest, flatMapMerge

flatMapConcat, flatMapLatest, 그리고 flatMapMerge는 모두 Kotlin의 코루틴 라이브러리에서 제공하는 Flow 연산자들입니다. 이들 연산자들은 각각 다른 방식으로 upstream Flow의 각 요소를 다른 Flow로 변환하고, 이렇게 생성된 여러 Flow들을 하나의 결과 Flow로 연결합니다. flatMapConcat: flatMapConcat 연산자는 upstream Flow의 각 요소를 Flow로 변환하고, 이를 순차적으로 연결하여 결과 Flow를 생성합니다. 즉, 한 번에 하나의 내부 Flow만 처리하며, 새로운 내부 Flow는 이전의 내부 Flow가 완전히 수집된 후에만 수집됩니다. flatMapMerge: flatMapMerge 연산자도 upstream Flow..

개발/코틀린 2023.06.14

파이브 라인스 오브 코드 - 리팩터링 리팩터링하기

높은 품질의 코드는 유지 보수 비용을 줄이고, 오류를 줄이며, 개발자의 만족도를 향상시키고 리팩터링을 통해 높은 품질을 유지 할 수 있습니다. 리팩터링을 하기 위해선 스킬, 문화, 도구가 충분해야 합니다. 스킬은 코드의 문제점을 파악하기 위해 필요하고, 문화는 리팩터링에 대해 권장하는 것이고, 도구는 작업에 대한 안정성을 보장하는 무언가 입니다. 리팩터링이란 무엇인가? 리팩터링은 기능을 변경하지 않고 코드를 변경하는 것 입니다. 리팩터링을 해야 하는 이유는 이러합니다. 코드를 더 빠르게 만들기 위해 더 작은 코드를 만들기 위해 코드를 더 일반적이거나 재사용 가능하게 하기 위해 코드의 가독성을 높이고 유지보수를 용이하게 하기 위해 이를 다시 정리하면 좋은 코드란 사람이 읽기 쉽고, 유지보수가 용이하며, 의..

개발/리팩터링 2023.06.11

(Plugin) Open current Activity

이번 포스팅에서는 제가 유용하다고 생각하는 플러그인중 하나인 Open current Activity 플러그인을 소개하고자 합니다. 특정 서비스를 오래동안 개발 하다보면 화면만 봐도 이게 어떤 Activity인지 이름을 바로 떠오르고 찾을 수 있을 것 입니다. 하지만 회사에 들어온지 얼마 안됐거나 다른사람이 작성한 화면인 경우 이 화면이 어떤 Activity인지 찾을 수 없습니다. 제가 이 플러그인을 알기 전에는 화면에 보이는 문구 하나를 골라서 전체 탐색하고 관련 Activity를 추적했습니다. 이러한 과정은 정말 불편하고 개발 생산성을 무척 떨어트리게 됩니다. Open current Activity 플러그인은 Mac 기준으로 command + f10, Windows 기준으로 Ctrl + f10 단축키를..

정수형 변수 스왑하기

public static void main(String[] args) { int a = 3; int b = 5; System.out.println(String.format("a: %d, b: %d", a, b)); // a: 3, b: 5 } 만약 이렇게 a가 3이고 b가 5인 변수에서 a와 b의 값을 스왑하기 위해서 어떻게 해야 할까요? temp 변수 사용하기 public static void main(String[] args) { int a = 3; int b = 5; int temp = a; a = b; b = temp; System.out.println(String.format("a: %d, b: %d", a, b)); // a: 5, b: 3 } 보통은 이렇게 temp 변수를 두고 1. temp..

개발/이것저것 2023.05.07

(Git) Git ignore 파일 생성기

이번 포스팅에서는 Git ignore 파일을 자동으로 생성해 주는 gitignore.io 사이트를 소개하려고 합니다.Git ignore 사용하는 이유Git ignore는 Git 저장소에서 추적하지 않을 파일이나 디렉터리를 지정하는 데 사용됩니다. Git ignore를 사용하면 Git 저장소에서 불필요한 파일이나 디렉터리를 제외할 수 있습니다. 보통 프로젝트에는 소스 코드 외에도 빌드 출력물, 로그 파일, 캐시 파일 등이 포함됩니다. 이러한 파일들은 보통 Git 저장소에 포함되지 않아야 합니다. Git ignore를 사용하면 이러한 파일들을 자동으로 Git 저장소에서 제외시킬 수 있습니다. 이렇게 하면 Git 저장소가 더욱 깨끗하고 관리하기 쉽게 유지됩니다. 또한 Git ignore는 프로젝트를 공유할 때..

개발/Git 2023.05.07

(Git) GitKraken에서 여러 계정 사용하기

안녕하세요. 이번 포스팅에서는 GitKraken을 사용할 때 git 계정을 여러 개 사용하는 방법에 대해 알아보려고 합니다.GitKrakenGitKraken은 Git gui tools로 git을 사용할 때 유용하게 사용할 수 있는 좋은 도구입니다.저는 2017년도부터 꾸준히 GitKraken을 사용해 왔는데 아직까지 크게 불편한 것이 없어서 계속 사용 중입니다.이와 유사한 도구로 SourceTree, Github Desktop, Fork 등이 있습니다.여러 계정이 왜 필요하지?개발자로 취업하고 주로 회사 맥북을 들고 다니다 보니 제 개인 맥북을 사용할 일은 거의 없어지게 되었습니다.그렇다 보니 공부를 하거나 개인 작업을 할 때도 회사 맥북을 이용하는데 commit author나 committer가 회사 ..

개발/Git 2023.05.07

(코틀린) Testing with Kotest

테스트 프레임워크는 개발 생명 주기 전반에서 품질을 유지할 수 있도록 도움을 주고, 재사용 가능한 코드 작성을 돕는 중요한 역할을 합니다. Kotest 명세 Kotest를 설정하는 방법과 테스트 하는 방법에 대해 알아봅니다. Kotest 시작하기 Kotest를 하려면 프로젝트 의존성에 Kotest를 추가해야 합니다. testImplementation "io.kotest:kotest-runner-junit5:4.5.0" Kotest와 IntelliJ의 통합해주기 위해 제공되는 플러그인이 있습니다. import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe class NumbersTest : StringSpec({ "2 + 2..

개발/코틀린 2022.12.18

(코틀린) 동시성

동시성(concurrent) 주제로 코루틴에 대해 알아보겠습니다. 코루틴 코틀린 프로그램에서도 자바 동시성 기본 요소를 쉽게 사용해 스레드 안전성을 이용할 수 있습니다. 하지만 동시성 연산인 Thread.sleep(), Thread.join(), Object.wait()등이 스레드를 블럭하기 때문에 문제가 남아있습니다. 스레드를 블럭하고 나중에 재개하려면 문맥 전환(context switch)를 하면서 성능이슈가 발생할 수 있습니다. 또한 자원을 많이 사용하기 때문에 비효율적입니다. 더 효율적인 접근 방법은 비동기(Asynchronous) 프로그래밍입니다. 동시성 연산에 대해 연산이 완료될 때 호출될 수 있는 람다를 제공할 수 있고, 원래 스레드는 블럭된 상태로 작업 완료를 기다리는 대신 다른 유용한 작..

개발/코틀린 2022.12.11

(코틀린) 자바 상호 운용성

자바 코드를 코틀린에서 사용하기 코틀린은 JVM을 주 대상으로 설계됐기 때문에 자바 코드를 코틀린에서 쉽게 사용할 수 있습니다. 자바 메서드와 필드 Unit과 void 자바에서 void는 코틀린에서 Unit으로 변환되서 사용합니다. 연산자 관습 Map.get()과 같은 몇몇 자바 메서드는 코틀린에서 연산자 관습을 만족합니다. 자바 메서드에는 operator가 붙어있지 않지만 코틀린에서는 연산자처럼 사용할 수 있습니다. 그래서 List나 Map의 get을 코틀린에서는 []로 접근 할 수 있습니다. 합성 프로퍼티 자바에는 합성 프로퍼티가 없고 getter와 setter를 사용하는 일이 많습니다. 이로 인해 코틀린 컴파일러는 자바의 getter와 setter를 일반적인 프로퍼티처럼 사용할 수 있게 변형 해줍니..

개발/코틀린 2022.12.03
728x90
반응형