본문 바로가기
728x90

kotlin21

[android] Context를 가지는 객체를 singleton으로 관리하기 아래의 코드들을 실행시키기 위한 MainActivity.kt와 activity_main.xml 더보기 class MainActivity : AppCompatActivity() { private val settingSwitch: SwitchCompat by lazy { findViewById(R.id.notification_setting_switch) } private val settingTv: TextView by lazy { findViewById(R.id.textView) } private val alarmSetting: NotificationSetting by lazy { NotificationSetting.getInstance(this) } override fun onCreate(savedInst.. 2023. 5. 22.
Kotlin 에서의 원시값 포장과 그에 적합한 클래스 선택하기 서론 원시값들을 모두 포장하다보니 클래스 외부에서 비교를 할 때 아래와 같이 코드가 길어지고 복잡해지는 경우가 많았다. 예제) 로또의 번호들이 중복되었는지 검사하는 코드 require(numbers.size == numbers.distinctBy { it.number }.size) { LOTTERY_NUMBERS_DUPLICATE_ERROR } 따라서, 외부에서 사용시 복잡해지지 않도록 equals를 override하였다. 두 객체를 비교할 때 객체의 주소가 아닌 객체의 내부 변수를 이용해 비교를 하도록 하였다. 하지만 이렇게 원시값을 포장할 때는 class 보다는 data class가 더 적절할 수 있다. 때에 따라서는 value class가 더 적절할 수도 있다. class, data class, v.. 2023. 4. 8.
[kotlin][JUnit5] TDD (Test Driven Development, 테스트 주도 개발) 얕은 지식으로 정리해보는 TDD!! 한두달 간의 프리코스 기간에는 재미없고 뭔지 모르기만 했던 테스트 주도 개발이 약 2주일만에 재밌고, 편해졌다! TDD란? 테스트 코드를 먼저 작성 후 작성된 테스트코드에 맞춰 제품 코드를 작성하는 프로그래밍 방법 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나 TDD는 단순한 설계를 장려하고 자신감을 불어 넣어 준다. TDD가 좋은 이유 내 코드 및 개선한/개선할 코드에 자신감을 준다. 코드를 이래저래 개선해도 '테스트 코드가 지켜줄거야!' 라는 자신감이 붙는다. 따라서 개선에 대해 두려움이 없어지고, '일단 바꿔보자'라는 생각을 할 수 있게 된다. 즉, 망설임이 없어진다. (= 개발에 속도가 붙는다.) 기능 명세 및 테스트 명세를 대신할 수 있게 된다.. 2023. 2. 21.
intellij에서 ktlint를 사용해 Kotlin 컨벤션 준수하기 컨벤션과 ktlint 대화를 할 때 최소한의 단어만 있다면 어느정도 의사소통은 가능합니다. 하지만 맞춤법, 문법과 같은 것들이 추가되면 더 많은 양의 내용들을 문장에 담을 수 있습니다. 반대로 맞춤법, 문법과 같은 것들이 지켜지지 않는다면, 읽기 싫고 잘못 이해되기 쉬운 문장이 됩니다. 마찬가지로 코드를 통해 개발자의 의사를 명확하고 이해하기 쉽게 전달하고자 한다면 국어에서의 맞춤법 문법과 같은 컨벤션(규칙)을 지켜줘야 합니다. 아래의 kotlin 언어의 규칙, git commit 메시지의 규칙 등과 같은 것들이 있습니다. https://kotlinlang.org/docs/coding-conventions.html#control-flow-statements Coding conventions | Kotli.. 2023. 2. 7.
디자인 패턴 및 프로그래밍 패러다임 디자인 패턴이 생겨난 이유와 장점 개발을 하다보면 이전에 사용했던 이전의 코드를 들여다보는 경험을 종종 하게 됩니다. 그러다 전에 사용했던 코드(해결책)을 그대로 복붙하기도 하고, 변형해서 쓰기도 하고, 혹은 상황에 맞지 않다고 판단하여 다른 방향의 구현을 고민하기도 합니다. 디자인 패턴은 재사용이 가능한 설계를 하도록 돕습니다. 따라서 클래스의 명세, 객체 간의 상호작용, 유지보수, 문서화 등을 개선할 수 있습니다. 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 '규약' 형태로 만들어둔 것 즉, 일종의 솔루션 아키텍처 패턴 MVC : Model / View / Controller의 기능을 수행하는 계층으로 나누어 관리하는 방법. MVP MVV.. 2023. 1. 20.
[android][kotlin] ViewFlipper 사용하기 자세히(android developer) 페이지 자동넘김을 할 때 사용하는 ViewFlipper를 사용해봅시다! 자동 넘기기를 시작해줄 버튼과 자동 넘기기를 멈춰줄 버튼, 사용할 뷰들을 ViewFlipper에 담아줍시다. activity_main.xml xml 더보기 MainActivity.kt package com.example.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import android.widget.ViewFlipper class MainActivity : AppCompatActivit.. 2021. 5. 18.
[android][kotlin] 달력, 시계, 타이머 사용하기 타이머와 달력 시계를 사용하는 방법을 알아봅시다~ 타이머(Chronometer), 달력(CalendarView), 시계(TimePicker) 우선 xml을 대충 구성해준 후 activity_main.xml 소스코드 더보기 MainActivity.kt package com.example.myapplication import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.SystemClock import android.widget.* class MainActivity : AppCompatActivity() { lateinit var chrono: Chr.. 2021. 5. 10.
[프로그래머스][kotlin] 키패드 누르기 제대로 풀지 못하여 다른 사람의 풀이를 참고했다. class Solution { fun solution(numbers: IntArray, hand: String): String { var answer = "" val map = mutableMapOf( 1 to Pair(0, 3), 2 to Pair(1, 3), 3 to Pair(2, 3), 4 to Pair(0, 2), 5 to Pair(1, 2), 6 to Pair(2, 2), 7 to Pair(0, 1), 8 to Pair(1, 1), 9 to Pair(2, 1), 0 to Pair(1, 0), "*" to Pair(0, 0), "#" to Pair(2, 0) ) //키패드의 번호판을 좌표화 시켜준다. var currentL: Any = "*" va.. 2021. 4. 8.
[프로그래머스][kotlin] 두 개 뽑아서 더하기 보호되어 있는 글 입니다. 2021. 3. 31.
728x90