본문 바로가기

분류 전체보기

(93)
디자인 패턴, 싱글톤 패턴 디자인 패턴 종류생성 패턴 (5개)구조 패턴 (7개)행동 패턴 (11개)싱글톤 (Singleton)어댑터 (Adapter)책임 연쇄 (Chain-of-Responsibility)팩토리 메소드 (Factory Method)브릿지 (Bridge)커맨드 (Command)추상 팩토리 (Abstract Factory)컴포짓 (Composite)인터프리터 (Interpreter)빌더 (Builder)데코레이터 (Decorator)이터레이터 (Iterator)프로토타입 (Prototype)퍼사드 (Facade)중재자 (Mediator) 플라이웨이트 (Flyweight)메멘토 (Memento) 프록시 (Proxy)옵저버 (Observer)  상태 (State)  전략 (Strategy)  템플릿 메소드 (Templat..
LiveData LiveData는 Lifecycle을 따른다.   --- 확장 병합 소스 변환 부분은 들어가서 참고 ㅠ ---LiveData는 Observer 역할을 한다.Observer는 main thread에서 호출된다.대응되는 Lifecycle이 Destroyed되면 해당 LiveData의 Observer 또한 제거된다.메모리 누수를 걱정할 필요가 없다.setValue → main ThreadpostValue → worker Thread (Background Thread)LiveData는 UI 영역(Activity, Fragment, ViewModel에서만 사용하자)LiveData는 LifeCycle에 묶여 있으며 observe는 main thread에서 호출된다.repository에서 오래 걸리는 작업을 하게 되..
가독성을 목표로 설계하라 로버트 마틴의 클린코드라는 책을 통해 널리 알려진 이야기로 개발자가 코드를 작성하는데 1분 이를 읽는데 10분 이라는 말이 있습니다. 즞 어던 개발자도 읽는데 시간이 많이 걸린다는 소리 입니다. 프로그래밍은 쓰기 보다 읽기가 중요합니다. 따라서 항상 가독성을 생각하면서 코드를 작성해야 합니다. 인식 부하 감사사실 가독성은 사람에 따라 다르게 느낄 수 있습니다. 하지만 일반적으로 많은 가람의 경험과 인식에 대한 과학으로 만들어진 어느정도의 규칙이 있습니다.if (person != null && person.isAdult){  view.showPerson(person)} else {  view.showError()}person?.takeIf {it.isAdult}  ?.let(view::showPerson)..
알고리즘 21, 22 두 정수 사이의 합class Solution { fun solution(a: Int, b: Int): Long { var answer: Long = 0 if (a   하샤드 수class Solution { fun solution(x: Int): Boolean { var answer = 0 var y = x while(y >= 1) { answer += y % 10 y /= 10 } if(x % answer == 0){ return true } else return false } }
단위 테스트를 만들어라 테스튼는 개발자 관점에서 애플리케이션 내부적으로 올바르게 작동하는지 확인하는 것이 아니라, 사용자 관점에서 애플리케이션 외부적으로 제대로 작동하는지 확인하는 것이 목표입니다. 단위 테스트는 개발자가 작성하며 개발자에게 유용합니다. 예를 들어 다음은 파보나치 수를 계산하는 fib 함수에 대한 단위 테스트로 앞에 있는 파보니치 숫자 5개를 제대로 구하는지 확인하는 테스트 입니다.@Test fun 'fib works correctly for the first 5 positions'(){ assertEquals(1, fib(0)) assertEquals(1, fib(1)) assertEquals(2, fib(2)) assertEquals(3, fib(3))..
enum class sealed class and Companion object enum (enumeration) : 이미 정의된 상수들로 이루어진 제한된 집합을 표현하는 특별한 클래스다.“enum name”을 통해 enum class 엘리먼트들을 참조할 수 있다.enum class SpartaClass{  BASIC_CLASS, STANDARD_CLASS, CHALLENGE_CLASS} 변수들을 선언한 상태보다 이와 같이 쓰면 가독성과 연관성을 한눈에 알아보기 쉬워지고 타입에 의한 열거형 이기 때문에 상수의 값이 같더라도 타입체크까지 해주기 때문에 좀 더 안전하게 변수 사용이 가능해진다.-- companion object 엘리먼트들을 가지고 있다.entries(Kotlin 1.9 버전부터 지원)모든 값을 리스트 형태로 반환한다. (기존 values() 함수가 존재)valueOf 함..
알고리즘 17 ~ 20 자연수 뒤집어 배열로 만들기 reversedArray() : 배열 반전 문자열을 정수로 바꾸기 정수 제곱근 판별 정수 내림차순으로 배치 toCharArray :  String으로 받은 문자열을 char 문자로 쪼갠 뒤 char[]배열에 순서대로 값을 넣어 반환 sortedArrayDescending : 원본 배열을 내림차순으로 정렬
Sequence kotlin standard library는 Collection과 함께 Sequences(Sequence)를 포함하고 있습니다. 컬렉션과 달리 시퀸스는 엘리먼트를 포함하지 않으며 반복하는 동안 엘리먼트를 생성합니다. 시퀸스는 Iterable과 동일한 기능을 제공하지만 여러 단계 처리에 대한 다른 접근방식을 구현 합니다.  Iterable 여러 과정을 처리할 때 각 단계를 완료하고 그 결과인 중간 컬렉션을 반환합니다.전체 컬렉션의 각 단계를 완료하고 그 다음단계로 진행시퀸스 여러단계의 처리는 바로 실행하지 않고 전체 단계가 처리된 결과가 요청되었을 때 실제 시퀸스 연산이 일어나면서 lazily하게 처리 됩니다.모든 단일 요소에 대해 처리를 one-bt-one 형태로 수행합니다.중간 처리 단계를 피해 전체 ..