Sam Story

2024-12-18 조건문을 좀 더 간결하게 작성 본문

공부기록

2024-12-18 조건문을 좀 더 간결하게 작성

Sam H 2024. 12. 18. 17:46

오늘은 간단한 on/off 로직을 작성함에 있어서

기존의 조건문을 효율적으로 작성하는 방법에 대해서 간단히 포스팅 해보려 한다.

 

지난번 레이아웃만 만들었던 계산기 어플을 기능까지 적용해보고 있다.

그러던 와중에 밤/낮 모드 버튼에 대한 기능을 만들다가 조건문을 작성했었는데

 

작성한 코드를 보자

class CarculatorViewModel: ViewModel() {

    // 모드 상태 LiveData
    private val _modeData = MutableLiveData<Boolean>()
    val modeData: LiveData<Boolean> get() = _modeData

    init {
        _modeData.value = false
    }

    // 모드 바꾸는 함수
    fun changeMode() {
        if(_modeData.value == true) {
            _modeData.value = false
        } else {
            _modeData.value = true
        }
    }
}

 

init 로 _modeData (밤/낮의 상태를 Boolean으로 확인) 초기값을 초기화 해주고

버튼을 누를 때마다 changeMode() 함수를 호출해서

 

true / false 를 바꿔주는 간단한 함수다.

 

위 코드처럼 작성해도 정상적으로 작동하기는 하지만

문득 조건문의 분기가 생기는게 굉장히 비효율적인것 같았고

실제로 이렇게 작성하게 되면 경고메시지도 발생한다.

 

 

첫번째 경고는 불필요하게 if문을 많이 사용한다.

두번째 경고는 직역하면 코드를 청소한다.

 

두가지 내용 모두 코드가 불필요하게 많이 작성되어 있다의 경고를 내포하고 있다.

 

 

그럼 위 경고를 클릭해 수정하게 되면 어떻게 되는지 살펴보자.

class CarculatorViewModel: ViewModel() {

    // 모드 상태 LiveData
    private val _modeData = MutableLiveData<Boolean>()
    val modeData: LiveData<Boolean> get() = _modeData

    init {
        _modeData.value = false
    }

    // 모드 바꾸는 함수
    fun changeMode() {
        _modeData.value = _modeData.value != true
    }
}

 

조건문의 분기를 나눠 작성했을 경우 5줄되던 코드가 1줄로 수정되었다.

코드 자체도 굉장히 단순해졌고 작동방식도 같다.

_modeData.value 가 true 가 아니라면 true을 반환하고

_modeData.value 가 true 라면 false를 반환하는 것이다.

 

사실 별게 아닐 수도 있지만 혹시나 무의식적으로 간단한 코드에도

if문을 이용해 분기를 나타내는 경우도 없지않아 있기에

한번 더 복습하기 위해 포스팅을 남겨 놓는다.

'공부기록' 카테고리의 다른 글

Axios  (0) 2025.05.27
2025-05-08 node.js 백엔드 기초  (1) 2025.05.08
2024-11-10 LottieAnimationView  (6) 2024.11.10
2024-10-27 앱 다크모드 특정색 변경  (1) 2024.10.27
2024-10-22 버튼 배경 그라데이션 처리  (2) 2024.10.22