반응형
삼항 연산자는 간단한 조건문에만
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();
- 이런식으로 가독성이 좋은 코드가 완성될 수 있습니다.
반응형
'프로그래밍 책 > 읽기 좋은 코드가 좋은 코드다' 카테고리의 다른 글
[읽코좋코] 변수제거와 중간 결과 삭제 (1) | 2025.06.26 |
---|---|
[읽코좋코] 설명/요약 변수 (2) | 2025.06.18 |
[읽코좋코] 루프와 논리 단순화 (0) | 2025.06.12 |
[읽코좋코] 의도 명시, 파라미터 주석 (1) | 2025.06.12 |
[읽코좋코] 주석의 문장을 명확하게 (0) | 2025.06.11 |