개발/Kotlin

개발/Kotlin

[Kotlin] 타입 소거와 Star projection

제네릭은 제대로 알고 사용해야 한다… ✔️ 제네릭은 Java 5에서 처음으로 도입된 개념이다. Java는 초기 개발 단계에서 제네릭을 고려하지 않았다. 제네릭 도입 전의 컬렉션은 타입 안전성을 제공하지 않았기 때문에 런타임 에러(ClassCastException) 발생 위험이 높았는데, 이후 제네릭이 도입되면서 기존의 컬렉션 클래스와 인터페이스를 타입 안전하게 만들기 위해 제네릭 타입 파라미터를 추가하게 된다. 그로 인해 제네릭이 없던 버전의 코드와 제네릭이 도입된 이후의 코드의 호환성을 유지해야 하는 문제가 발생하게 되는데, 여기서 오늘의 주제 중 하나인 "타입 소거"를 Java 5(1.5)에서 도입하게 된다.타입 소거 제네릭 타입 정보를 컴파일 타임에만 유지하고, 런타임에는 제거하여 원시 타입(raw..

개발/Kotlin

[Kotlin] 테스트 코드 (2) - TDD/BDD와 디자인 패턴

앞선 포스팅에서는 테스트 코드란 무엇이며 왜 작성하고, 그 종류는 어떤 것들이 있는지 간단히 알아보았다. [Kotlin] 테스트 코드 (1) - 테스트 코드란? 오늘 포스팅할 내용은 "테스트 코드 작성"에 관한 이야기이다. 안드로이드 단톡방에서 사람들이 메서드 하나 추가될 때마다 적는다던 테스트 코드, 정보처리기사 공부하다 봤던 TDD, 여러 채용 work2type.tistory.com 하지만 기본적인 내용들만으로 효율적이고 생산적인 테스트 코드를 작성할 수 있다면 좋겠지만, 테스트 코드는 작성부터 유지보수까지 적지 않은 비용이 들어가는 중요한 요소이다. 그렇다면 우리가 테스트 코드 작성에 대해서 더 공부할 수 있는 것들은 어떤 것들이 있을까? 개발방법론 - TDD와 BDD TDD "테스트가 개발을 주도..

개발/Kotlin

[Kotlin] 테스트 코드 (1) - 테스트 코드란?

오늘 포스팅할 내용은 "테스트 코드 작성"에 관한 이야기이다. 안드로이드 단톡방에서 사람들이 메서드 하나 추가될 때마다 적는다던 테스트 코드, 정보처리기사 공부하다 봤던 TDD, 여러 채용 공고들에 숱하게 적혀있던 "테스트 코드 작성 경험이 있으신 분" 등 안드로이드 진영에서의 테스트 코드 작성의 중요성은 날이 갈수록 커지고 있다. "테스트 코드"를 실무에서 작성해 본 경험이 없어 이에 대한 지식이 전무한 사람들도 꽤 많을 것이라 생각되는데, 이번 "테스트 코드" 시리즈 포스팅을 읽은 뒤에는 테스트 코드 작성의 중요성과 작성 방법, 다른 여러 정보들을 알고 갈 수 있었으면 좋겠다. 테스트 코드란? 소프트웨어의 기능과 동작을 테스트하는데 사용되는 코드 테스트 코드는 비단 spring, android에서만 ..

개발/Kotlin

[안드로이드] 테스트 코드 - JUnit의 예외 처리 (expected, assertThrows, doThrow)

우리가 작성해야 하는 테스트 코드 비단 성공하는 케이스뿐만이 아니다. 실패하는 케이스와 발생할 수 있는 여러 예외들에 대한 처리 또한 테스트가 분명 중요한 부분인데, 오늘은 JUnit와 Mockito를 사용한 테스트 코드 작성 시에 사용 가능한 예외 처리 기법에 대해 비교해보고자 한다. ✔️ @Test @Test(expected = NumberFormatException.class) public void CalculateValues_test() { . . . } Test 어노테이션의 expected를 사용한 예외 처리는 JUnit 프레임워크 자체에서 지원하는 예외 테스트 방법이다. 어노테이션에 미리 지정해둔 예외가 해당 테스트 메서드에서 발생하면 테스트가 성공한 것으로 간주하는데, 여기서 문제가 발생한다..

개발/Kotlin

Singleton 패턴이란?

1. Singleton 패턴이란? 객체의 인스턴스를 최초 1번만 생성하고 이후에는 기존 인스턴스를 호출해서 사용하는 패턴을 말한다. 우린 일반적으로 인스턴스를 생성할 때 new 연산자를 사용하는데, 이 때 메모리에 객체의 인스턴스를 할당하게 된다. 물론 최초 1번의 할당까지는 아무런 문제가 되지 않는다. 하지만 여러 곳에서 필요할 때마다 인스턴스를 생성하고 호출한다면, 이는 메모리를 엄청나게 낭비하는 '비효율적인' 행위가 될 것이다. 따라서 객체가 유일해야할 경우에 싱글톤 패턴을 사용하여 기존에 생성된 인스턴스를 호출해서 사용한다. 2. 언제 사용하는 것이 적절할까? 싱글톤을 적용하지 않고 필요할 때마다 객체를 생성해서 사용한다면 매 생성마다 메모리를 할당받게 되고, 이는 성능 저하를 일으킨다. 하지만 ..

개발/Kotlin

연산자 개수에 따른 차이(&, |와 &&,||의 차이)

1. &&, || A && B -> A가 거짓인 경우에 B는 확인하지 않음 ( 둘 다 True인 경우에 성립하므로 ) A | | B -> A가 참인 경우에 B는 확인하지 않음 ( 둘 중 하나만 True여도 성립하므로) 2. &, | A & B -> A가 거짓이더라도 B를 확인함 A | B -> A가 참이더라도 B를 확인함 3. 결론 &, | 는 논리 연산자 + 비트 연산자의 역할을 수행한다. ( 비트 마스킹에도 사용된다 ) &&, || 는 단순 논리 연산자의 역할만을 수행한다. ( 흔히들 사용하는 조건문에서 ) 우리는 일반적으로 &&, || 와 같은 논리 연산자의 역할로 사용하기에 쉽게 놓칠 수 있는 부분이다. 사소한 차이라도 알고 있다면 더 효율적인 코딩이 가능하므로 꼭 기억해두자.

개발/Kotlin

Serializable Parcelable 차이

안드로이드에는 Activity, Service, Broadcast Receiver, Contents Provider라는 4대 컴포넌트라는 것이 존재한다. 서로 알아서 소통하면 얼마나 좋을까? 하지만 그렇지 않기 때문에 개발자가 오작교를 놔줘야한다.. 🤢 여기서 오작교를 안드로이드에서 Intent라고 하는데, 오늘은 이 Intent의 효율적인 사용을 위한 얘기를 해보려고 한다. Intent intent = new Intent(MainActivity.this, SubActivity.class); startActivity(intent); 매우 기초적인 명시적 Intent의 사용 예시이다. 전달할 데이터가 없거나 간단하기 때문에 별도의 작업이 필요하지 않다. 하지만 한 Activity에서 다른 Activity에..

최선의 최선
'개발/Kotlin' 카테고리의 글 목록