zepetto7065
120
2019-09-04 16:26:24 작성 2019-09-04 16:27:12 수정됨
3
422

조건문 질문입니다.


개발하다가 의문이 들어 선배님들의 방법은 어떠한가해서 글을 올립니다.


조건1, 조건2, 조건3 이있고 


value1, value2가 있습니다.


조건 1일때, value1

조건2, 조건3일때 value2 인 조건문을 코딩할때


1번 소스.

if(조건1.equals("value1"){

  System.out.println("조건1입니다.");

}else if(조건2.equals("value2") || 조건3.equals("value2"){

    System.out.println("조건2입니다.");

}



2번 소스.

if(조건1.equals("value1"){

  System.out.println("조건1입니다.");

}else{

    System.out.println("조건2입니다.");

}

위 두 가지 소스를 놓고 보았을 때, 무엇이 좋은 코딩인가요?
1번은 가독성? 2번은 소스 남발이 안되었다? 부족한 실력으로 질문드립니다. 

0
  • 답변 3

  • 쭈압
    355
    2019-09-04 16:31:39

    1번은 default가 없고

    2번은 default가 있다는 점에서 달라요

    예를들어 조건1, 2, 3의 값이 전부 value3이면

    1번에서는 아무런 출력도 되지 않겠지만

    2번에서는 조건2라고 출력이 되겠죠

    결과적으로 보자면 예외처리가 둘 다 안되어있어서 판단하기는 힘들지만

    어쨌든 맞지 않는 결과를 출력하는 2번은 지양해야겠죠

  • 하두
    12k
    2019-09-04 17:06:02

    경우의 수를 줄이는건 예술입니다.

  • 초코쪼꼬
    6k
    2019-09-04 17:47:58

    위의 예제는 전혀 다른 개념인데요..?


    if(조건1.equals("value1"){

      System.out.println("조건1입니다.");

    }else if(조건2.equals("value2") || 조건3.equals("value2"){

        System.out.println("조건2입니다.");

    }


    case 1:

    조건1과 value 가 같으면 "조건1입니다." 가 출력

    조건2가 value2 또는 조건3이 value2와 같으면 "조건2입니다." 가 출력이고

    그 이외의 case는 그냥 흐르겠죠.


    if(조건1.equals("value1"){

      System.out.println("조건1입니다.");

    }else{

        System.out.println("조건2입니다.");
    }


    case 2:

    위의 분기문은 조건1과 value1이 같으면 "조건1입니다." 이고 그이외의 case는 전부 "조건2입니다."입니다.


    이말은 정상적인 값이 올때는 의도한 바와 같겠지만. 오류의 케이스가 와도 전부 "조건2입니다."로 뜨겠죠.


    case 2를 쓰는건 명확하지도 않을뿐더러 오류를 찾을때도 귀찮아지는 분기문입니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.