if/else if/ else

Alex·2023년 10월 12일
0

자바 공부

목록 보기
4/8
post-custom-banner

📌if/ else if /else

public class number {
	void number1(int A, int B) {
		if (A > B) {
			System.out.println(">");
		}
		if (A == B) {
			System.out.println("==");
		}
		if (A < B) {
			System.out.println("<");
		}
	}
	public static void main(String[] args) {
		number table = new number();
		table.number1(2, 4);
	}
}

백준 코드테스트에서'두 수 비교하기' 문제를 풀었다.
처음 코드를 짰을 때는 if가 세번이나 반복돼서 이걸 좀 더 보기 좋게 할 방법이 없을까 궁금했다.

예전에 기사를 쓸 때는 문장에 반복되는 표현을 최대한 줄이라고 교육을 받았었다. 문장이 반복되면 세련된 맛이 떨어져서 그렇다.

코딩을 배우면서도 '불필요한 중복을 없애라'는 원칙이 중요하다는 것을 알게 됐다. 개발자들도 불필요한 중복을 줄일 수 있는 여러 방법을 고안해냈다. 코드를 간결하게 만들기 위해서다.

(🧐물론 중복된다고 다 줄이는 것은 아니다. 오히려 그러면 가독성이 떨어지기도 한다고!...사실 이건 일반 글을 쓸 때도 마찬가지다. 주어가 중복된다고 모든 주어를 다 지워버리면 글을 읽을 때 좀 혼란스럽다.)

다른 사람들이 쓴 코드를 보니

if (A > B) {
	System.out.println(">");
	} else if (A == B) {
	System.out.println("==");
	} else {
	System.out.println("<");
		}
        

이렇게 깔끔하게 작성할 수 있다는 것을 알게 됐다. 그런데, 이 코드가 정말 간결해서 좋은 걸까? 코드는 긴 것보다 짧은 것이 좋은건가?

🔎짧은 코드가 항상 좋은 코드는 아니다. 코드를 명확하고 이해하기 쉽게 쓰는 것도 중요하다.

혼자서 의문을 풀기 위해서 답을 찾아 봤다. 중요한 포인트는 if라는 조건문의 특성이었다.


📌if에는 독립적으로 작동하는 특성이 있다.

❓독립적? 이게 무슨 말이지.

🔎'if는 앞에 있는 코드에 관계없이 작동을 한다.'는 뜻이다.

if (A > B) {
	System.out.println(">");

이 코드에서 조건이 충족돼 작동을 하든, 충족되지 않아서 하지 않든

if (A == B) {
			System.out.println("==");
          

이 코드는 작동한다.

비효율적인 방식이다. 첫번째 if조건문에서 ">" 값이 출력되면, 사실 두번째 세번째 if 조건문은 작동하지 않아도 된다. 작동해봤자 별 의미가 없다.

(어차피 명시된 조건을 충족하지 않을테니)

그래서, else if를 사용하는 것이 좋다고 한다.

if (A > B) {
	System.out.println(">");
	} else if (A == B) {
	System.out.println("==");
    

🔎else if는 앞에 있는 if절이 false 값을 반환할 때만 작동한다.

첫번째 if 조건이 충족돼서 ">"를 출력하면 그 뒤에 있는 코드들은 작동하지 않는 것이다.

마지막에는 else를 썼다. 처음에 왜 여기는 조건을 넣지 않는 걸까? 궁금했다. 생각해보니 논리적으로 자연스러운 흐름이라서 그런 것 같다.

▪첫번째 if에서 A>B가 아니라서 false가 나오면 그다음 else if로 넘어간다.

▪else if에서 A==B가 아니라서 false가 나오면 그 다음으로 넘어간다.

▪남은 경우의 수는 A<B일 때다.

else를 넣으면서 조건을 써 줄 필요가 없는 것! 역시 else if처럼 앞에 있는 if 절이 false, 작동하지 않을 때 else가 작동한다. 불필요한 연산을 하지 않으니 연산 효율성이 좋다.

🧐나는 개발자로서 연산 효율성을 고려하는 것이 중요하다고 생각한다. 개발자들은 프로그램을 실행시키기 위해서 코드를 짠다. 프로그램을 효율적으로 실행할 방법을 항상 고민해야 한다. 프로그램이란 것은 결국 코드가 지시한 작업을 수행하는 것이다. A라는 작업을 할 때 불필요한 연산을 하지 않으면 당연히 작업을 빠르게 수행하게 된다.

확실히 첫번째 코드보다 두번째 코드가 가독성이 좋아 보인다. 논리적인 흐름이 한 눈에 보인다.

if가 세 개 연결됐을 때는 '조건 세개가 나오는 구나' 정도를 알 수 있다. if/else if/else는 첫번째가 false면 두번째로 넘어가고, 두번째마저 false면 마지막으로 넘어간다는 조건 구조를 한눈에 볼 수 있다.

코드에 문제가 생겨서 수정을 할 때, 더 좋은 코드로 개선할 때 구조를 쉽게 파악할 수 있으면 당연히 도움이 된다.


😆개발을 배울 때마다 느끼는 거지만 코드를 작성할 때는 정말 '논리'가 중요하다. 예전에 기사를 쓸 때 사수한테 논리가 부족하다는 말을 많이 들었는데, 개발을 배우면서 논리를 제대로 공부한다는 생각이 든다. 한층 더 성장하는 기분!

profile
답을 찾기 위해서 노력하는 사람
post-custom-banner

0개의 댓글