210216_B책_불 표현식 직접반환

1649 단어 TILTIL

어제에 이어서 B책을 계속 진행하겠다.
야근을 좀 해서 눈이 쫌 피로한 상태다.
오늘만 인공눈물을 6개 썼다 ㅠ_ㅠ

1.3 <불 표현식을 직접 반환>

String s;
int i;

boolean isVaild() {
	if (i < 0 || s = null || s.trim().isEmpty()) {
    	return false;
    } else {
    	return true;
    }
}

이런 코드가 있다.
i가 음수이거나 s가 null이거나 s가 ""의 빈 문자이거나.
셋 중 하나라도 해당되면 false를 리턴한다.
셋 다 아니라면 true를 리턴하게 된다.

이것은 전형적인 검사 방법이라고 한다. 객체의 몇 가지 속성을 확인하는.
코드에는 기능상 오류가 없지만, if문이 여기서 꼭 필요하지 않다.

boolean isVaild() {
	return i >= 0 && s != null && !s.trim().isEmpty
}

이 한줄의 코드로 대체 가능하다는 것이다.
if문 다섯 줄을 코드 한 줄로 압축했다.
여기서 if문이 생략 가능한 이유는 isVaild()가 boolean 타입이였기 때문! (true false를 뱉으니)

여기서 사용된 법칙이 있는데 '드모르간의 법칙' 이다.

!A && !B == !(A || B) // 참
!A || !B == !(A && B) // 참

간단하게 정의하면 이렇게 된다.
(난 바로 이해가 안되어서 ㅋㅋㅋㅋ 특정 문자를 대입해보고 쉽게 이해했다.. ㅠㅠ)

지은이의 경험상 조건문의 조건을 3개 이상 합칠 때는 조건문들의 덩어리를 나눠야 좋다고 한다.

boolean isVaild() {
	boolean checkInt = i >= 0;
    boolean checkString = s != null && !s.trim().isEmpty();
    return checkInt && checkString;

	}

이렇게 간소화를 진행해야 가독성이 더 좋아진다고 한다.
음.. 확실히 혼자 작업하는게 아니라면 팀원들 혹은 상대방을 배려하며 코드를 작성하는게
나에게도 상대방에게도 훨씬 긍정적인 효과를 가져온다고 생각한다.

하지만 역시 위와 같은 형식을 boolean 타입일 때만 유효하다고 한다.
앞으로의 챕터가 불 표현식 간소화, 널익셉션피하기, 스위치 실패피하기, 항상 괄호사용하기 등등
업무에 잘 쓰이는 내용들이라 기대가 된다.. +_+

오늘의 코멘트: 아직 별로 진행안했지만 뭔가 노하우가 쏙쏙 모아져있는 책일듯, 느낌이 좋다.

좋은 웹페이지 즐겨찾기