Print Friendly and PDF

프로그래밍 책/읽기 좋은 코드가 좋은 코드다

[읽코좋코] 조건문

나는야 개발자 2025. 6. 16. 23:32
반응형

삼항 연산자는 간단한 조건문에만

C언어에서는 "조건문 ? true : false"로 사용이 가능하며 이것을 이용해 가독성을 높일수도 있습니다.

하지만 꼭 그렇지만은 않습니다.

 

예를들어 

int one = 1;
int two = 2;

int big_size = one > two ? one : two;

- 이러한 삼항 연산자는 쉽게 이해가 가능합니다. one이 더 크면 one을 반환 two가 더 크면 two를 반환

 

반대로

return exponent >= 0 ? matissa * (1 <<exponent) : mantissa / (1 << -exponent);

- 점점 값이 추가되고 조건문이 길어지다 보면 복잡해지기 시작합니다.

- 한줄로 간단히 표현할 수 있는 곳에 쓰는 것이 좋습니다.

 

함수 중간 반환하기

책에 따르면 어떤 프로그래머들은 함수에서 반환 되는 곳은 여러 곳에 하면 안된다고 얘기를 하는 것에 동의할수 없다고 합니다. 함수 중간에 반환하는 것은 할 수 있다면 꼭 해야하는 것이라고 합니다.

 

public boolean Contacins(String str, String substr){

	if(str == null || substr == null) return false;
    if(substr.equals("")) return true;
   	...
}

- 만약 중간 반환자가 없다면 매우 부자연스럽게 되버리기 때문에 넣었을때 매우 좋은 예시 입니다.

 

중첩 최소화

 

if(user_result == SUCESS){
	if(premisstion_result != SUCCESS){
    	...
        return;
    }
   	reply.writeErroes("");
    } else {
    	reply.WriteErroes(user_result);
    }
    reply.Done();

- 책에서 여러 설명들이 있지만 요약을 하자면 중첩이 되어 있으면 첫번째 if 다음에 당연히 인간은 else에 대한 부분을 생각하는데 여기서 또 다른 if문이 나와 헷갈리기 시작하기 때문에 최대한 중첩을 쓰지말라고 합니다.

 

위 코드를 간단하게 하면

if(user_result == SUCCESS){
	reply.WriteError("");
}else{
	reply.WriteError(user_result);
}
reply.Done();

- 이렇게 간단하게 가능합니다.

 

그리고 중간 반환과 중첩을 제거하면

if(user_result != SUCCESS){
	reply.WriteErroe(user_result);
	reply.Done();
    return;
}

if(permission_result != SUCCESS){
	reply.WriteErrors(premisstion_result);
    reply.Done();
    return;
}

reply.WriteErrors("");
reply.Done();

- 이런식으로 가독성이 좋은 코드가 완성될 수 있습니다.

반응형