일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ViewModel
- 코틀린
- 유닛테스트
- Room
- 안드로이드 디자인패턴
- 공격적 프로그래밍
- MVVM
- 안정성
- 컴포즈
- dagger2
- UnitTest
- git
- 깃
- 테스트의 장점
- 코딩테스트
- 파이썬
- mock
- 디자인패턴
- Kotlin
- Python
- 자료구조
- Android
- compose
- Di
- Observable
- 안드로이드
- Jetpack
- 단위테스트
- 제한함수
- rxjava
- Today
- Total
목록전체 글 (66)
세상을 바꾸는 개발자

안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다 저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다. 안정성 - 최대한 플랫폼 타입을 사용하지 말라 자바에서는 모든 것이 nullable일 수 있으므로 최대한 안전하게 접근한다면, 이를 nullable로 가정하고 다뤄야한 다 코틀린에서는 어떤 메서드는 null을 리턴하지 않을 것이 확실할 수 있다. 이러한 경우에는 마지막에 !! 을 붙인다 플랫폼 타입이란 다른 프로그래밍 언어에서 전달되어서 nullable인지 아닌지 알 수 없는 타입을 말한다 코틀..

안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다 저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다. 안정성 - inferred 타입으로 리턴하지 말라 타입을 확실하게 지정해야 하는 경우에는 명시적으로 타입을 지정해야 한다는 원칙을 가지고 있어야한다 이는 굉장히 중요한 정보이다, 안전을 위해서 외부 API를 만들때는 반드시 타입을 지정하고, 이렇게 지정한 타입을 특별한 이유와 확실한 확인 없이는 제거하지 말아야한다 inferred 타입은 프로젝트가 진전될 때, 제한이 너무 많아지거나 예측하지 못..

안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다 저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다. 안정성 - 변수의 스코프를 최소화 하라 상태를 정의 할 때는 변수와 프로퍼티의 스코프를 최소하하는 것이 좋다 프로퍼티 보다는 지역 변수를 사용하는 것이 좋다 최대한 좁은 스코프를 갖게 변수를 사용해야한다 반복문 내부에서만 변수가 사용된다면, 변수를 반복문 내부에서 작성하는 것이 좋다 나쁜 예) var user: User for(i in users.indices){ user = users[i] p..

안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다 저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다. 안정성 - 가변성을 제한하라 사람들이 많이 사용하는 앱이더라도 가끔 생각대로 동작하지 않거나 크래시가 발생하는 경우가 있습니다 이때 사용자들은 앱에 대한 신뢰도가 크게 떨어지게 됩니다 그래서 프로그래밍에 있어서 안정성은 정말 중요한 요소입니다 안정성으로 인해서 좋은 서비스, 나쁜 서비스로 나뉠 수 도 있다고 생각합니다 코틀린은 다양한 개발자들의 경험을 토대로 만들어진 언어이기때문에 사용자들의 신..

안드로이드는 자바와 코틀린 2가지 언어로 개발을 할 수 있지만 요즘 자바를 사용해서 개발하는 경우는 찾아보기 힘듬니다 저또한 코틀린을 사용합니다 하지만 사용하면서 잘 몰랐던 부분도 있고 한번도 써보지않는 편리고 좋은 기능들이 많이 존재합니다 그래서 이번에 복습할겸 이펙티브 코틀린의 내용으로 정리를 하려고 합니다. 안정성 - 예외를 활용해 코드에 제한을 걸어라 확실하게 어떠한 형태로 동작해야 하는 코드가 있다면, 예외를 활용해 제한을 걸어주는 것이 좋다 코틀린에서 코드 동작에 제한을 거는 여러가지 방법 require 블록 : 아규먼트를 제한 할 수 있다 check 블록 : 상태와 관련된 동작을 제한할 수 있다 assert 블록 : 어떤 것이 true인지 확인 할 수 있다. assert 블록은 테스트모드에서..

평소에 잘 생각안하고 많이 사용하는 =, get()의 차이는 무엇 일까요 ? 먼저 코드로 알아보도록 하겠습니다! class Customer { private var _id = 1 // get() 을 사용 val id: Int get() = _id // = 을 사용 val id: Int = _id } 블로그나 깃허브를 돌아다니다 보면 위와 같이 2가지 방법중 하나를 사용해서 가변성을 제안하는 코드가 있습니다 어떤 차이가 있을까요??? 자바 코드로 변경해보면 답이 알 수 있습니다. 먼저 get() 을 사용한 코드를 자바로 변경하면 public final class Customer { private int _id = 1; public final int getId() { return this._id; } ..
트라이(Trie)는 문자열의 집합을 표현하는 '트리 자료구조'이다. 원하는 원소를 찾기 위해 자주 이용되는 이진 검색 트리 (STL set, map) 등에서는 원소를 찾는데 **O(logN)**의 시간이 걸리게 된다. 하지만, 문자열의 경우 두 문자열을 비교하기 위해서는 문자열의 길이만큼의 시간이 걸리기 때문에 원하는 문자열을 찾기 위해서는 O(MlogN)의 시간이 걸리게 된다. 따라서 여러 번 이 작업을 수행한다면 시간이 오래 걸릴 것이다. 이 단점을 해결하기 위한 문자열 특화 자료구조가 트라이(Trie)이다. 쉽게 말해, "문자열을 빠르게 탐색할 수 있는 자료구조"이다. 트라이(Trie) 자료구조의 장/단점 트라이의 장점은 앞에서도 언급했듯이 당연히 문자열을 빠르게 찾을 수 있다는 점이다. 더불어, ..

Map은 Key와 Value 한쌍으로 이루어진 자료형이다. Map은 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 Key를 통해 Value를 얻는다. 값(Value)은 중복될 수 있지만, **Key는 고유한 값(Unique)**을 가져야 한다. Map은 저장 순서를 유지할 필요가 없고, Key를 통해 Value를 얻어내기 때문에 Key는 중복을 허용하지 않는다. 구조도 HashMap, HashTable 키와 값(key, value)이 하나의 쌍을 이루는 데이터 구조이다. 즉, 키와 배열의 인덱스를 이용하여 키를 저장하는 자료구조이다. HashTable은 키를 해시함수(Hash Function)로 계산하여 그 값을 배열의 인덱스로 사용한다. 이때, 해시 함수에 의해 반환된 데이터의 고유 숫자값을..
배열 (Array) 장점 바로 만들어서 활용하기가 쉽다 더 복잡한 자료 구조의 기초가 될 수 있다 원하는 데이터를 효율적으로 탐색/가져올 수 있다 정렬에 용이하다 단점 데이터를 저장 할 수 있는 메모리 크기가 고정되어 있다 데이터 추가 / 삭제 방법이 비효율적이다 구조 재구성 시 정렬하는 방식이 비효율적이다 사용 엑셀의 스프레드시트 처럼 직사각형 테이블, 수학적 벡터 (vector) 및 행렬 (matrix)를 구현하는 데 사용된다 다른 데이터 구조에서 사용된다 스택 (Stack) 장점 동적인 메모리 크기 데이터를 받는 순서대로 정렬된다 빠른 런타임 (runtime) 단점 가장 최신 요소만 가져온다 한번에 하나의 데이터만 처리 가능하다 사용 가장 마지막으로 입력된 것을 순차적으로 바로 처리하고 싶을 때 브..
array나 list 처럼 순열 자료구조 (collection) 이지만 set은 순서라는 개념이 존재하지 않는다. Set은 집합이라는 의미를 가진다. Set의 특징 데이터를 비순차적(unordered)으로 저장할 수 있는 순열 자료구조 (collection). 집합의 개념과 같다고 생각하면 된다.(집합 역시 {1, 9, 6, 4}처럼 중복과 순서가 없다.) 삽입(insertion) 순서대로 저장되지 않는다. 즉 특정한 순서를 기대할 수 없는 자료구조. 수정 가능하다(mutable). 동일한 값을 여러번 삽입 불가능하다. 동일한 값이 여러번 삽입 되면 하나의 값만 저장된다. Fast Lookup이 필요할때 주로 쓰인다. Set이라는 인터페이스를 통해 자바에서는 3가지의 Set이 있다. Hash 알고리즘을 ..