java 코드 리팩토링

728x90

 제가 오늘 데일리 루틴으로 작성한 코드입니다.

class Solution {
    public long solution(int price, int money, int count) {
        long result = 0;
        long usedMoney = 0;
        for (int i = 1; i <= count; i++) {
            usedMoney += (long)price * i;
        }
        if (money >= usedMoney) {
            result = 0;
        } else {
            result = usedMoney - money;
        }
        return result;  
    }
}

 새로 선언한 변수가 두개나 있고, if문도 더 간단하게 바꿀 수 있을 것 같습니다. 비교적 최근에 나온 삼항연산자를 사용하면 if문을 줄이고, 이를 이용하여 return하면 변수의 개수도 줄일 수 있을 것 같습니다.


class Solution {
    public long solution(int price, int money, int count) {
        long usedMoney = 0;
        for (int i = 1; i <= count; i++) {
            usedMoney += (long)price * i;
        }
        return money >= usedMoney ? 0 : usedMoney - money;
    }
}

 변수 result가 사라졌고, if 및 else삼항연산자를 통해 훨씬 간단하게 바뀌었습니다. 하지만 for문도 너무 복잡해서 줄이거나 없애고싶습니다.


class Solution {
    public long solution(int price, int money, int count) {
        long usedMoney = (long)price * count * (count + 1) / 2;
        return money >= usedMoney ? 0 : usedMoney - money;
    }
}

 1부터 n까지의 합n * (n + 1) / 2로 표현할 수 있습니다.

 훨씬 길던 코드가 단 두 줄로 정리되었습니다. 조건에 따라 다르겠지만 리팩토링을 잘 하는것도 기술인 것 같습니다.

728x90
반응형
LIST